如何在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请求方法,比如PUTDELETE ,也可以在这里使用,但是并不是所有浏览器都支持。

阿贾克斯()

寻找参数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

一探究竟!