一尘不染

jQuery Ajax随机错误仅在Chrome中

ajax

问题总结

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

较长的描述

jQuery
ajax出现错误。似乎在通过表单身份验证登录后;着陆页(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")]禁用此属性”
保护的操作确实可以解决我的问题,但后来却没有。因此,如果先前的声明有任何混淆,请原谅。大声笑,头发短!

[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缓存碎片被设置为允许我配置的一样少的缓存。


阅读 160

收藏
2020-07-26

共1个答案

一尘不染

这个问题似乎是Chrome 28如何处理GET请求缓存的错误。版本27和版本28中的POST请求一样工作良好。

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

2020-07-26