595

GET$.get(..)

POST$.post()..

怎么样PUT/DELETE

4

13 回答 13

984

您可以使用ajax方法:

$.ajax({
    url: '/script.cgi',
    type: 'DELETE',
    success: function(result) {
        // Do something with the result
    }
});
于 2010-01-28T10:58:15.060 回答
128

$.ajax将工作。

$.ajax({
   url: 'script.php',
   type: 'PUT',
   success: function(response) {
     //...
   }
});
于 2010-01-28T10:58:17.563 回答
75

我们可以扩展 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);
})

从这里复制

于 2014-04-01T13:03:44.520 回答
30

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

type: "put"或者 type: "delete"

并非所有浏览器都支持,但大多数浏览器都支持。

查看此问题以获取有关兼容性的更多信息:

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

于 2010-01-28T10:58:19.060 回答
11

这里,您可以这样做:

/* 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()它基本上只是调整了方法参数的副本。

于 2013-10-28T06:59:08.003 回答
9

当您在 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
    }
});
于 2017-02-05T17:40:16.937 回答
5

您应该能够使用jQuery.ajax

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


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

发出请求的类型(“ POST”或“ GET”),默认为“ GET”。
注意:这里也可以使用其他 HTTP 请求方法,例如PUTDELETE,但并非所有浏览器都支持。

于 2010-01-28T10:59:05.593 回答
4

阿贾克斯()

寻找参数类型

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

于 2010-01-28T10:58:40.537 回答
3

为简洁起见:

$.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
  });
}
于 2015-06-10T16:34:03.150 回答
2

你可以用 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
  }
});
于 2014-05-18T15:24:15.000 回答
2

如果你需要为$.postLaravel 做一个工作,Route::delete或者Route::put只是添加一个参数"_method"="delete""_method"="put".

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

必须适用于其他框架

注意:使用 Laravel 5.6 和 jQuery 3 测试

于 2019-02-27T23:02:17.637 回答
0

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

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

看看这个!

于 2014-04-06T19:41:44.570 回答
-1

您可以在数据散列中包含一个名为:_method,值为“删除”的键。

例如:

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

这也适用于

于 2013-09-12T22:36:26.717 回答