jQuery 1.5只在ajax方法中发送GET请求

时间:2011-02-05 19:31:12

标签: javascript jquery rest xmlhttprequest

我正在尝试向RESTful Web服务发出PUT请求,但是,似乎jQuery 1.5确实响应了“type”设置中的任何更改。无论“类型”中的值如何,请求都将作为GET发送。在jQuery 1.4中,这不是问题。

这是我的代码:

$.ajax({
    type: "PUT",
    url: "https://api.somesite.com/v1.0/people/" + individualID + "/",
    dataType: "jsonp",
    data: $("#editProfile").serializeArray(),
    cache: "false",
    success: function(data,textStatus,jqXHR) {
        $.modal.close();
    },
    error: function(jqXHR,textStatus,errorThrown) {
        alert("Error!");
    }
});

4 个答案:

答案 0 :(得分:6)

据我所知,你不能通过PUT发出JSONP请求。由于JSONP通过注入指向远程域的<script>元素来工作,因此该请求将始终是GET请求。

如果绝对必须向远程域发出PUT请求,则需要在本地域使用服务器端代理,或者如果不需要IE支持,则需要查看CORS。

答案 1 :(得分:0)

来自jQuery.ajax() docs

  

要求的类型(“POST”或   “GET”),默认为“GET”。注意:其他   HTTP请求方法,例如PUT和   DELETE,也可以在这里使用,但是   它们并非所有人都支持   浏览器。

也许有一些额外的浏览器信息,我们可以找出导致问题的原因,但是现在看来jQuery不想保证除了GET和POST之外的功能。我很惊讶地发现=)

答案 2 :(得分:0)

How do I PUT data to Rails using JQuery也许?

编辑:应用,你没有说过网络服务是在Rails中。但它也可能支持类似的东西。您是否尝试过发送POST请求?

答案 3 :(得分:0)

我正在努力做类似的事情。我已经能够在1.5之前成功发送PUT但是已停止使用1.5。我知道在1.5中处理ajax的方式有一个很大的改变,所以接下来我会调查一下。 当它工作时,它在safari,firefox&amp;铬。当它工作时,你将首先得到一个OPTIONS被发送,并在你的服务器端必须满意地响应OPTIONS请求之前指出。这是一个测试代码,它在1.5之前对我有用,所以它是可能的。另外,我无法让firefox缓存OPTIONS响应客户端。其他浏览器都这样做了。

http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" 

var url = 'http://api.example.com/rest/action?key=123ABC&data={"value":55}';
$.ajax({
  type: "PUT",
  url: url,
  data: {},
  success: function(msg){
    alert( "Data Saved: " + msg );
  },
  error: function(msg){
     console.debug(msg);
  }
});