我在客户的服务器上遇到了一个非常奇怪的问题 我在几个脚本中使用了下面发布的代码。 $ .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错误,无需进一步解释。
知道这里发生了什么吗?
更多细节。
HTTPScoop显示以下结果
(3次尝试,红色状态显示"连接由通信伙伴关闭"):
Chrome显示以下内容:
几乎解决了。
apache日志在请求中显示状态403
它还显示返回的大小为0,这可能是chrome等显示请求失败的原因
为什么会发生这种情况仍然不明确,但它肯定是服务器端配置问题(很可能是一个mod_rewrite问题或类似的问题)。
答案 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(参数)。