Jquery ajax 随机错误仅在 Chrome 中出现

标签 jquery ajax asp.net-mvc google-chrome forms-authentication

问题摘要

通过表单例份验证使用 Chrome 登录后。作为 returnUrl 的登陆页面将在我的 jQuery ajax 中出错,而不会影响服务器。 状态代码= 0消息=“错误”。 (几乎没有用)。在尝试使用 Firefox 但无法重现问题后,我开始认为 Chrome 是问题所在。清除缓存、关闭并重新打开都无法解决。我能找到的最接近的文章是这个。 jQuery Ajax - Status Code 0? 但是,URL 是相对的,/Test

另一篇SO文章:jquery ajax problem in chrome

更长的描述

我在使用 jQuery ajax 时遇到错误。似乎在使用表单例份验证登录后立即;登陆页面(returnUrl),会出现JS错误。然后刷新页面(F5)后,脚本将起作用(大部分)。即使不使用 F5,使用链接导航到同一页面也将允许 JS 工作(大部分)。所以登录后直接是我的主要测试路径。

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

我曾经遇到过导航或 f5 刷新无法停止错误的情况。因此在开头段落中使用了“大多数”。

经过一天的时间,通过研究、JS调试器、代码简化和各种场景都找不到确实的原因;我需要请求一些帮助。

Javascript错误反馈

我最多能收集到的是状态代码0错误消息“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 方法,它使用以下事件加载。虽然下面的脚本看起来会攻击服务器。有定时逻辑来确保它每 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 来解决此问题。

关于Jquery ajax 随机错误仅在 Chrome 中出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17778504/

相关文章:

php - 选择框中选择的不同值和 id

javascript - 如何从 JavaScript 发送没有基本 URL 的请求? (SAP 图形用户界面)

asp.net-mvc - 如何在mvc中使内容类型MIME类型动态化?

javascript - 如何获取 Jquery 旋钮的 ID

jquery - 将手持触摸事件添加到 Web 应用程序

javascript - 手动重新渲染/重新加载框架

javascript - 通过 AJAX 加载时启用自动完成

css - 如何让 Sitecore 字段渲染器对图像使用 css 类

asp.net-mvc - AntiForgeryToken 是否应该应用于每个后期操作?

jquery - 如何在 Accordion 主面板上显示帮助图标