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

这篇博客介绍了在jQuery中发送PUT和DELETE请求的各种方法,包括使用ajax方法设置请求类型,扩展jQuery创建快捷方式,以及利用jQuery插件实现跨浏览器支持。还提到了HTTP请求的不同方法及其用途。
摘要由CSDN通过智能技术生成

GET$.get(..)

POST$.post()..

PUT/DELETE呢?


#1楼

您可以在数据哈希中包含一个名为:_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')
});

这也将适用于


#2楼

这里 ,您可以执行以下操作:

/* 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()的副本,其中方法参数已调整。


#3楼

您可以使用ajax方法:

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

#4楼

$.ajax将起作用。

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

#5楼

通过指定JQuery的ajax函数似乎有可能

type: "put"type: "delete"

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

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

大多数Web浏览器中都可以使用PUT,DELETE,HEAD等方法吗?


#6楼

ajax()

寻找参数类型

其他HTTP请求方法(例如PUT和DELETE)也可以在此处使用,但并非所有浏览器都支持它们。


#7楼

您应该可以使用jQuery.ajax

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


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

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


#8楼

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

这里复制


#9楼

我编写了一个jQuery插件,其中包含此处讨论的解决方案以及跨浏览器的支持:

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

看看这个!


#10楼

您可以使用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
  }
});

#11楼

为了简洁:

$.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
  });
}

#12楼

这是在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
    }
});

#13楼

这是一个简单的单行代码,我使用了多个变量:

$.put("https://your-url.com",{item1:'new item1',item2:'new items2'});

#14楼

如果需要在Laravel Route::deleteRoute::put中使$.post工作,只需添加参数"_method"="delete""_method"="put"

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

必须为其他人工作

注意:已通过Laravel 5.6和jQuery 3测试


#15楼

1)GET: - 当客户端在Web服务器上请求资源时使用。

2)HEAD: - 当客户端请求有关资源的某些信息但不请求资源本身时使用。

3)POST: - 在客户端向服务器发送信息或数据时使用 - 例如,填写在线表单(即向Web服务器发送大量复杂数据)。

4)PUT: - 当客户端在请求URL下发送替换文档或将新文档上载到Web服务器时使用。

5)删除: - 当客户端尝试从Web服务器删除由请求URL标识的文档时使用。

6)TRACE: - 当客户端要求可用代理或中间服务器更改请求以宣布自己时使用。

7)选项: - 当客户端想要确定在Web服务器上检索或处理文档的其他可用方法时使用。

8)CONNECT: - 当客户端想要建立到远程主机的透明连接时使用,通常是为了通过HTTP代理促进SSL加密通信(HTTPS)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值