问题总结
通过表单身份验证使用Chrome登录后。作为returnUrl的登录页面将在不访问服务器的情况下使我的jQuery ajax错误。的status code = 0和message = "error"。(几乎没有用)。在尝试使用Firefox且无法复制问题后,我开始认为Chrome是问题所在。清除缓存,关闭和重新打开均无法解决。我能找到的最接近的文章是这个。jQuery Ajax-状态码0? 但是,URL是相对的,/Test
status code = 0
message = "error"
/Test
较长的描述
jQuery ajax出现错误。似乎在通过表单身份验证登录后;着陆页(returnUrl),将出现JS错误。然后,刷新页面(F5)后,脚本将起作用(大部分情况下)。即使不使用F5,使用链接导航到同一页面也将使JS正常工作。所以登录后直接是我的主要测试路径。
同样,在另一个选项卡中导航以/Test直接执行操作也可以。直到我按照提及进行导航或刷新之前,原始选项卡仍然会出错。
我曾经有过导航或f5刷新无法停止错误的情况。因此,在开头段落中使用“大部分”。
经过一天的努力,无法通过研究,JS调试器,代码简化和各种方案找到可靠的理由;我需要一些帮助。
JavaScript错误反馈
我最多能收集到的是status code of 0和error message of "error"。
status code of 0
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")]禁用此属性” 保护的操作确实可以解决我的问题,但后来却没有。因此,如果先前的声明有任何混淆,请原谅。大声笑,头发短!
[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
发生错误时,Fiddler不会显示GET请求,这意味着未命中服务器。另外,我在操作中放置了一个调试器断点,以确认该操作没有被执行。
另外: 由于ajax调用每5秒发生一次。在页面上看到状态0和错误-“错误”;我清除了缓存,并且没有刷新页面,chrome和ajax请求开始工作。作为记录,我的chrome缓存碎片被设置为允许我配置的一样少的缓存。
这个问题似乎是Chrome 28如何处理GET请求缓存的错误。版本27和版本28中的POST请求一样工作良好。
您可以通过在$ .ajax()调用中将’cache’属性设置为false来解决此问题。