仅限Chrome中的Jquery ajax随机错误

Val*_*mas 9 ajax asp.net-mvc jquery forms-authentication google-chrome

问题摘要

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

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

更长的描述

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

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

我曾经有过航行或f5刷新不能阻止错误的时间.因此在开头段落中使用"大多数".

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

Javascript错误反馈

我能收集到的最多的是一个status code of 0和一个error message of "error".

软件和版本

ASP.NET MVC 3
Chrome v28.0.1500.72 m
jQuery v1.8.3
AttributeRouting
Run Code Online (Sandbox Code Playgroud)

使用Chrome,我也尝试清空缓存和CTRL + F5.

MVC
我有一个受到[Authorize(Roles = "Admin")]禁用的操作,禁用此属性似乎可以解决我的问题,然后再解决我的问题.所以,抱歉,如果任何早先的陈述混淆 哈哈,短发!

[GET("Test")]
public ActionResult Test()
{
    Console.WriteLine("Test");
    return new EmptyResult();
}
Run Code Online (Sandbox Code Playgroud)

任何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);
        });
    });
Run Code Online (Sandbox Code Playgroud)

我有一个jQuery方法,使用以下事件加载.虽然followig脚本看起来会砰然关闭服务器.有时间逻辑确保它每5秒才会命中一次.

$(document).on('mousemove','*',function(e){ TestMethod(this,e,'mousemove');});
Run Code Online (Sandbox Code Playgroud)

Javascript方法

这是我的ajax调用,就像我能做到的那样简单.

   function TestMethod(sender, e, eventTrgger)
    {
        $.ajax(
        {
            type: "GET",
            url: '/Test',
            dataType: 'html',
            success: function (html)
            {
                //-- tested with nothing here.
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

提琴手

发生错误时,Fiddler不会显示GET请求,这意味着服务器未被命中.此外,我在操作中放置了一个调试器断点,确认操作没有被命中.

附加: 由于ajax调用每5秒发生一次.在页面上看到状态-0和错误 - "错误"; 我清除了缓存而没有刷新页面,chrome和ajax请求开始工作.为了记录,我的chrome缓存设置被设置为我可以配置的缓存.

小智 8

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

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