我正在尝试向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!");
}
});
答案 0 :(得分:6)
据我所知,你不能通过PUT发出JSONP请求。由于JSONP通过注入指向远程域的<script>
元素来工作,因此该请求将始终是GET请求。
如果绝对必须向远程域发出PUT请求,则需要在本地域使用服务器端代理,或者如果不需要IE支持,则需要查看CORS。
答案 1 :(得分:0)
要求的类型(“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);
}
});