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

use*_*729 538 jquery put httprequest

GET:$.get(..)

POST:$.post()..

怎么样PUT/DELETE

Dar*_*rov 892

你可以使用ajax方法:

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

  • 请注意,如果您使用IIS网络服务器并且jquery"PUT"或"DELETE"请求返回404错误,则需要在IIS中启用这些谓词.我发现这是一个很好的资源:http://geekswithblogs.net/michelotti/archive/2011/05/28/resolve-404-in-iis-express-for-put-and-delete-verbs.aspx (62认同)
  • @andi根据http://stackoverflow.com/questions/1757187/which-browsers-dont-support-a-http-delete-with-jquery-ajax,来自IE6的任何浏览器都支持这些http方法.除非您正在开发*古老*浏览器,否则您可以安全地使用"GET"和"POST"之外的http方法. (22认同)
  • BE AWARE:`"要求的类型("POST"或"GET"),默认为"GET".注意:其他HTTP请求方法,如PUT和DELETE,也可以在这里使用,但它们不是所有浏览器都支持."来自:http://api.jquery.com/jQuery.ajax/#options (21认同)
  • 为什么"类型:'删除'"未在jQuey文档中列出? (9认同)
  • 对于1.9之后的版本,你可以使用`method`或`type` (6认同)
  • 另外,[您不能传递表单数据](http://stackoverflow.com/questions/15088955/how-to-pass-data-in-the-ajax-delete-request-other-than-headers)。它必须通过 URI。 (2认同)

Jac*_*kin 120

$.ajax 将工作.

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

  • PUT需要`contentType:"application/json"` (3认同)
  • 这个答案和Darin Dimitrov之间有什么区别吗?我认为它们都是同时创建的,因此没有任何抄袭,但我没有看到这个答案增加了什么(除了940声誉给雅各布). (3认同)

Ste*_*rov 71

我们可以扩展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
    });
  };
});
Run Code Online (Sandbox Code Playgroud)

现在你可以使用:

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

这里复制

  • @FranciscoPresencia - 1.Delete 不需要数据,而 put 需要数据 ----> 第三行处理这种情况 2. $.get 和 $.post 可以有不同的签名 ----> 这只是创建额外的 jquery 方法用于删除和放置。get 和 post 有自己的 jquery 方法。 (2认同)

Pek*_*ica 29

通过指定,似乎可以使用JQuery的ajax函数

type: "put" 要么 type: "delete"

所有浏览器都不支持,但大多数浏览器都不支持.

有关兼容性的更多信息,请查看此问题:

大多数Web浏览器中是否提供PUT,DELETE,HEAD等方法?


use*_*775 9

这里,你可以这样做:

/* 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');
    }
});
Run Code Online (Sandbox Code Playgroud)

它基本上只是$.post()改编了方法参数的副本.


moo*_*oom 8

这是一个更新的ajax调用,用于在jQuery> 1.9时使用JSON:

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


Pas*_*TIN 5

你应该可以使用jQuery.ajax:

使用HTTP请求加载远程页面.


您可以使用以下type选项指定应使用的方法:

要求的类型(" POST"或" GET"),默认为" GET".
注意:此处也可以使用其他HTTP请求方法,例如PUTDELETE,但并非所有浏览器都支持这些方法.

  • 你知道哪些浏览器不支持`PUT`或`DELETE`? (4认同)
  • 破碎的,如果他们不能使用HTTP:^) (3认同)