jQuery $ .ajax与GET一起使用但在POST时失败

时间:2013-10-26 22:40:41

标签: javascript jquery ajax

我在客户的服务器上遇到了一个非常奇怪的问题 我在几个脚本中使用了下面发布的代码。 $ .ajax配置几乎相同(即只有文件,数据和成功函数更改),并始终使用类型:POST 这在大多数情况下都适用,但对于下面的情况,POST总是失败。 将类型更改为GET可以顺利运行。

我有点无能为力。

var parameter = {
    password : $("#password").val()
};

$.ajax({
    type     : "POST",
    url      : "query/submit_password.php",
    dataType : "xml",
    async    : true,
    data     : parameter,
    success  : function(aXHR) { /* ... */ },
    error    : function(aXHR, aStatus, aError) { alert("Error:\n" + aStatus + "\n"+ aError); }
});

此代码始终带有警报" NetworkError:发生网络错误。"。
再次 - 具有几乎相同代码的其他情况工作没有问题 Chrome和Firefox开发工具报告POST错误,无需进一步解释。

知道这里发生了什么吗?


更多细节。

  • 客户的网站托管在GoDaddy
  • 同样的代码在其他服务器上运行良好
  • 是的,该文件确实存在,因为GET请求正常工作
  • 我尝试过的所有浏览器都没有安装阻止程序插件(如adblock)

HTTPScoop显示以下结果
(3次尝试,红色状态显示"连接由通信伙伴关闭"):

HTTPScoop result

Chrome显示以下内容:

Chrome error


几乎解决了。
apache日志在请求中显示状态403 它还显示返回的大小为0,这可能是chrome等显示请求失败的原因 为什么会发生这种情况仍然不明确,但它肯定是服务器端配置问题(很可能是一个mod_rewrite问题或类似的问题)。

1 个答案:

答案 0 :(得分:1)

尝试在您的ajax调用中添加contentType:“application / json; charset = utf-8”

$.ajax({
    type     : "POST",
    url      : "query/submit_password.php",
    contentType: "application/json; charset=utf-8",
    dataType : "xml",
    async    : true,
    data     : parameter,
    success  : function(aXHR) { /* ... */ },
    error    : function(aXHR, aStatus, aError) { alert("Error:\n" + aStatus + "\n"+ aError); }
});

如果它没有帮助尝试benhowdle89所说的,stringify(参数)。