我有一个使用JQuery编写的Web应用程序。我在整个应用程序中使用了$ .post方法,包括登录屏幕。它工作正常,现在突然出现了,它不再有效。然而,post响应现在返回null;如果我手动输入帖子,它会返回我期望的JSON代码。
可能有用的一些事情: 1.)我正在链接谷歌托管的JQuery。 2.)我没有对我的代码或网站进行任何更改。它在今天早上前一周工作正常。 3.)偶尔,jquery post请求确实有效。特别是当我慢慢地踩过代码时。
以下是代码失败的信息:
function TryLoggingIn()
{
$.post(
"login.php",
{action: "login", username: $("#_uxUsername").val(), password: $("#_uxPassword").val(), redirect: $("#_uxRedirect").val()},
function(data)
{
if (data.response == "error")
{
$("#_uxErrorBox").slideUp();
$("#_uxErrorBox").slideDown();
$("#_uxErrorText").text(data.message);
$(".widgetErrorIcon").show();
}
else
{
window.location = data.newlocation;
}
},
"json"
);
}
奇怪的是,当它失败并且我正在使用WireShark观看它时,我从未看到发布请求,但它进入了成功函数,数据设置为null。
答案 0 :(得分:2)
要检查的一件事,特别是如果WireShark没有看到任何请求,那就是浏览器是否正在缓存Ajax目标。防止这种情况的一种方法是在您的URL中附加一个无意义的查询字符串或锚点,其中包含一个随机数字。
Firebug对于这类事情也很有用,尽管使用WireShark也是一个好主意。
最后,使用jQuery.ajax()函数而不是jQuery.post()重写ajax调用通常很有用,因为这样可以调整更多内容,例如超时值,“缓存”国旗等。