如何在jQuery发送PUT/DELETE请求?

# EYZ0: # EYZ1

# EYZ0: # EYZ1

PUT/DELETE怎么样?

614563 次浏览

你可以使用ajax方法:

$.ajax({
url: '/script.cgi',
type: 'DELETE',
success: function(result) {
// Do something with the result
}
});

$.ajax可以。

$.ajax({
url: 'script.php',
type: 'PUT',
success: function(response) {
//...
}
});

似乎可以通过指定JQuery的ajax函数来实现

< p > # EYZ0或 # EYZ0 < / p >

并不是所有浏览器都支持,而是大多数浏览器都支持。

看看这个问题,了解更多关于兼容性的信息:

大多数浏览器都有PUT, DELETE, HEAD等方法吗?< /强> < / >

ajax()

寻找参数类型

这里也可以使用其他HTTP请求方法,如PUT和DELETE,但并非所有浏览器都支持它们。

你应该能够使用jQuery.ajax:

使用HTTP加载远程页面 请求。< / p >

< p > < br > 您可以指定应该使用哪个方法,使用# EYZ0选项:

请求的类型(“POST”或 "GET"),默认为"GET"。< br >注意:其他 HTTP请求方法,例如PUTDELETE,也可以用在这里,但是 他们并没有得到所有人的支持 浏览器。< / p >

你可以在你的数据散列中包含一个名为:_method的键,值为'delete'。

例如:

data = { id: 1, _method: 'delete' };
url = '/products'
request = $.post(url, data);
request.done(function(res){
alert('Yupi Yei. Your product has been deleted')
});

这也适用于

在这里,你可以这样做:

/* Extend jQuery with functions for PUT and DELETE requests. */


function _ajax_request(url, data, callback, type, method) {
if (jQuery.isFunction(data)) {
callback = data;
data = {};
}
return jQuery.ajax({
type: method,
url: url,
data: data,
success: callback,
dataType: type
});
}


jQuery.extend({
put: function(url, data, callback, type) {
return _ajax_request(url, data, callback, type, 'PUT');
},
delete_: function(url, data, callback, type) {
return _ajax_request(url, data, callback, type, 'DELETE');
}
});

它基本上只是一个复制了$.post()的方法参数。

我们可以扩展jQuery来创建PUT和DELETE的快捷方式:

jQuery.each( [ "put", "delete" ], function( i, method ) {
jQuery[ method ] = function( url, data, callback, type ) {
if ( jQuery.isFunction( data ) ) {
type = type || callback;
callback = data;
data = undefined;
}


return jQuery.ajax({
url: url,
type: method,
dataType: type,
data: data,
success: callback
});
};
});

现在你可以使用:

$.put('http://stackoverflow.com/posts/22786755/edit', {text:'new text'}, function(result){
console.log(result);
})

在这里复制

我写了一个jQuery插件,它包含了这里讨论的跨浏览器支持的解决方案:

https://github.com/adjohnson916/jquery-methodOverride

点击这里查看详情!

你可以用AJAX来做!

对于PUT方法:

$.ajax({
url: 'path.php',
type: 'PUT',
success: function(data) {
//play with data
}
});

对于DELETE方法:

$.ajax({
url: 'path.php',
type: 'DELETE',
success: function(data) {
//play with data
}
});

简洁:

$.delete = function(url, data, callback, type){


if ( $.isFunction(data) ){
type = type || callback,
callback = data,
data = {}
}


return $.ajax({
url: url,
type: 'DELETE',
success: callback,
data: data,
contentType: type
});
}

这是一个更新的ajax调用,当你使用JSON与jQuery > 1.9:

$.ajax({
url: '/v1/object/3.json',
method: 'DELETE',
contentType: 'application/json',
success: function(result) {
// handle success
},
error: function(request,msg,error) {
// handle failure
}
});

如果你需要让$.post工作到Laravel Route::deleteRoute::put,只需添加一个参数"_method"="delete""_method"="put"

$.post("your/uri/here", {"arg1":"value1",...,"_method":"delete"}, function(data){}); ...

必须适用于其他框架

注:用Laravel 5.6和jQuery 3测试

CRUD

这可能更有道理

创建(POST)请求

function creat() {
$.ajax({
type: "POST",
url: URL,
contentType: "application/json",
data: JSON.stringify(DATA1),
success: function () {
var msg = "create successful";
console.log(msg);
htmlOutput(msg);
},
});
}

READ()请求

// GET EACH ELEMENT (UNORDERED)
function read_all() {
$.ajax({
type: "GET",
url: URL,
success: function (res) {
console.log("success!");
console.log(res);
htmlOutput(res);
},
});
}


// GET EACH ELEMENT BY JSON
function read_one() {
$.ajax({
type: "GET",
url: URL,
success: function (res) {
$.each(res, function (index, element) {
console.log("success");
htmlOutput(element.name);
});
},
});
}

更新(把)请求

function updat() {
$.ajax({
type: "PUT",
url: updateURL,
contentType: "application/json",
data: JSON.stringify(DATA2),
success: function () {
var msg = "update successful";
console.log(msg);
htmlOutput(msg);
},
});
}

删除(删除)的请求

function delet() {
$.ajax({
type: "DELETE",
url: deleteURL,
success: function () {
var msg = "delete successful";
console.log(msg);
htmlOutput(msg);
},
});
}

GitHub Reference