JQuery .ajax请求没有命中服务器

时间:2010-05-25 14:35:31

标签: ajax jquery

我正在使用如下所示的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!");
    }
});

当代码执行时,我得到成功警报,但服务从未在服务器上执行!

以下是更多数据:

  • 如果我使用单独的REST client发出相同的请求,则服务正确执行
  • 如果我关闭服务器(没有运行),以便点击该URL给我404,我仍然会收到成功消息。
  • 我尝试用“foo”替换数据。这适用于REST客户端,但从代码中得到相同的结果。

非常感谢任何想法!

3 个答案:

答案 0 :(得分:2)

documentation about .ajax()type属性说:

  

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

因此,您的浏览器可能不支持PUT,而是通过POST发送数据(因此您的服务无法识别)。
使用Firebug或类似方法找出使用的方法。


让它运作的一个想法:

使用POST发送数据,但添加其他字段,例如__http_method=PUT。在服务器端,您的服务必须识别这一点并执行PUT功能。

这可能不是最好的解决方案,但我也遇到过其他框架(例如PHP的symfony)。

答案 1 :(得分:0)

所有浏览器都不支持PUT

答案 2 :(得分:0)

Nick Craver对我的问题发表评论:

  

您正在运行此页面的是从端口8080提供的吗?

事实证明这导致我解决了这个问题。当应用程序和服务都托管在同一服务器(和端口)上时,问题就消失了。

This post建议如果我评论回答问题,并且评论者没有重新发布作为答案,我将发布我自己的答案并接受它。尼克,如果你回复发布这个作为答案,我将接受它自己。