如何在jQuery中发送PUT / DELETE请求?
GET
: $.get(..)
POST
: $.post()..
那么PUT/DELETE
呢?
你可以使用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来为PUT和DELETE创build快捷方式:
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的ajax函数
type: "put"
或type: "delete"
并不是所有的浏览器都支持,但大部分都是支持的。
看看这个问题了解更多兼容性信息:
PUT,DELETE,HEAD等方法在大多数Web浏览器中都可用?
从这里 ,你可以做到这一点:
/* 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.ajax
:
使用HTTP请求加载远程页面。
你可以使用type
选项来指定应该使用哪种方法:
请求的types(“
POST
”或“GET
”),默认为“GET
”。
注意:其他的HTTP请求方法,比如PUT
和DELETE
,也可以在这里使用,但是并不是所有浏览器都支持。
阿贾克斯()
寻找参数types
其他的HTTP请求方法,比如PUT和DELETE,也可以在这里使用,但并不是所有浏览器都支持。
当jQuery> 1.9使用JSON时,这是一个更新的ajax调用:
$.ajax({ url: '/v1/object/3.json', method: 'DELETE', contentType: 'application/json', success: function(result) { // handle success }, error: function(request,msg,error) { // handle failure } });
为了简洁:
$.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 }); }
PS:使用angular度
你可以用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 } });
您可以在您的数据散列中包含一个名为:_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') });
这也将适用
我已经编写了一个jQuery插件,将这里讨论的解决scheme与跨浏览器支持相结合:
https://github.com/adjohnson916/jquery-methodOverride
一探究竟!