问题总结
通过表单身份验证使用 Chrome 登录后。作为 returnUrl 的登录页面将在不访问服务器的情况下出错我的 jQuery ajax。status code = 0
和message = "error"
。_ (几乎没用)。在尝试了 Firefox 并且无法复制问题后,我开始认为 Chrome 是问题所在。清除缓存、关闭和重新打开并不能解决问题。我能找到的最接近的文章是this。jQuery Ajax - 状态码 0?
但是,URL 是相对的,/Test
另一篇 SO 文章:chrome 中的 jquery ajax 问题
更长的描述
我收到 jQuery ajax 错误。似乎在使用表单身份验证登录后立即;登陆页面(returnUrl),会出现JS错误。然后刷新页面(F5)后,脚本将(大部分)工作。即使不使用 F5,使用链接导航到同一页面也将允许 JS 工作(大多数情况下)。所以登录后直接是我的主要测试路径。
此外,在另一个选项卡中导航以/Test
直接执行操作也是可行的。原始选项卡仍然出错,直到我按上述方式导航或刷新它。
我曾经有过导航或 f5 刷新不能停止错误的时候。因此在开头段落中使用了“大部分”。
通过研究,JS调试器,代码简化和各种场景,经过一天半的时间无法找到一个坚实的原因;我需要请求一些帮助。
Javascript 错误反馈
我能收集到的最多的是 astatus code of 0
和 an error message of "error"
。
软件和版本
ASP.NET MVC 3
Chrome v28.0.1500.72 m
jQuery v1.8.3
AttributeRouting
使用 Chrome,我也尝试过清空缓存和 CTRL+F5。
MVC
我有一个受[Authorize(Roles = "Admin")]
禁用此属性保护的操作似乎确实解决了我的问题,但后来却没有。所以,很抱歉,如果任何先前的陈述混淆了。大声笑,头发短!
[GET("Test")]
public ActionResult Test()
{
Console.WriteLine("Test");
return new EmptyResult();
}
任何 javascript 脚本文件都不在受表单身份验证保护的文件夹后面。
jQuery doc.ready
我有一个 jQuery 错误事件,我用它来暂停调试以查看对象的内容。
//-- while I am using this method, I have also used the `error: `
//-- part of $.ajax with the same result.
$(function ()
{
$(document).ajaxError(function (event, jqxhr, settings, exception)
{
Debug.Log("event: " + event);
Debug.Log("jqxhr: " + jqxhr.responseText);
Debug.Log("settings: " + settings);
Debug.Log("exception: " + exception);
});
});
我有一个使用以下事件加载的 jQuery 方法。虽然followig脚本看起来会猛击服务器。有定时逻辑来确保它每 5 秒触发一次。
$(document).on('mousemove','*',function(e){ TestMethod(this,e,'mousemove');});
Javascript 方法
这是我能做到的最简单的 ajax 调用。
function TestMethod(sender, e, eventTrgger)
{
$.ajax(
{
type: "GET",
url: '/Test',
dataType: 'html',
success: function (html)
{
//-- tested with nothing here.
}
});
}
提琴手
当错误发生时,Fiddler 没有显示 GET 请求,这意味着服务器没有被命中。另外,我在操作中放置了一个调试器断点,以确认操作没有被命中。
附加: 由于 ajax 调用每 5 秒发生一次。在页面上并看到状态-0 和错误-“错误”;我清除了缓存并且没有刷新页面,chrome 和 ajax 请求开始工作。作为记录,我的 chrome 缓存设置设置为允许配置的尽可能少的缓存。