我正在使用如下所示的JQuery发出ajax请求:
var data = createXMLdata();
$.ajax({
url: 'http://localhost:8080/foo/bar',
type: "PUT",
data: data,
processData: false,
contentType: "application/text",
error: function(xhr, status, error) {
alert("Error: " + status);
},
success: function() {
alert("Success!");
}
});
当代码执行时,我得到成功警报,但服务从未在服务器上执行!
以下是更多数据:
非常感谢任何想法!
答案 0 :(得分:2)
documentation about .ajax()
的type
属性说:
要求的类型(“POST”或“GET”),默认为“GET”。注意:此处也可以使用其他HTTP请求方法,例如
PUT
和DELETE
,但并非所有浏览器都支持。
因此,您的浏览器可能不支持PUT
,而是通过POST
发送数据(因此您的服务无法识别)。
使用Firebug或类似方法找出使用的方法。
让它运作的一个想法:
使用POST
发送数据,但添加其他字段,例如__http_method=PUT
。在服务器端,您的服务必须识别这一点并执行PUT
功能。
这可能不是最好的解决方案,但我也遇到过其他框架(例如PHP的symfony)。
答案 1 :(得分:0)
所有浏览器都不支持PUT
答案 2 :(得分:0)
Nick Craver对我的问题发表评论:
您正在运行此页面的是从端口8080提供的吗?
事实证明这导致我解决了这个问题。当应用程序和服务都托管在同一服务器(和端口)上时,问题就消失了。
This post建议如果我评论回答问题,并且评论者没有重新发布作为答案,我将发布我自己的答案并接受它。尼克,如果你回复发布这个作为答案,我将接受它自己。