仅限Chrome中的Jquery ajax随机错误

问题摘要

通过表单身份validation登录Chrome后。 作为returnUrl的登录页面将错误我的jQuery ajax而不会命中服务器。 status code = 0message = "error" 。 (几乎没用)。 尝试过Firefox并且无法复制问题,我开始认为Chrome就是问题所在。 清除缓存,关闭和重新打开不能解决问题。 我能找到的最接近的文章就是这个。 jQuery Ajax – 状态码0? 但是,URL是相对的, /Test

另一篇SO文章: chrome中的jquery ajax问题

更长的描述

我收到jQuery ajax的错误。 似乎在使用表单身份validation登录后立即; 登陆页面(returnUrl),将JS错误。 然后刷新页面(F5)后,脚本将(大部分)工作。 即使不使用F5,使用链接导航到同一页面也可以让JS工作(主要是)。 登录后直接是我的主要测试路径。

此外,在另一个选项卡中直接导航到/Test操作,也可以。 原始选项卡仍然出错,直到我按照提到的方式导航或刷新它。

我曾经有过导航或f5刷新不会停止错误的时间。 因此在开头段落中使用“大多数”。

经过一天和一些无法通过研究,JS调试器,简化代码和各种场景找到一个可靠的理由; 我需要一些帮助。

Javascript错误反馈

我收集的最多是status code of 0error 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脚本文件都不在使用表单身份validation保护的文件夹后面。

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缓存设置被设置为我允许配置的缓存。

该问题似乎是Chrome 28如何处理GET请求缓存的问题。 版本27工作正常,版本28中的POST请求也正常。

您可以通过在$ .ajax()调用中将’cache’属性设置为false来解决此问题。