6

我的网站是使用 Ext JS 4.1 框架和 ASP .Net MVC v3 制作的。呈现新帧时,有 19 个单独的 AJAX 请求以 JSON 格式检索数据。所有请求都是熟悉的,由 Ext.Ajax.request() 发出。例子:

Ext.Ajax.request({
    url: getOrderLink,
    method: "GET",
    params: { recId: orderRecId },
    headers: {
        'Accept': 'application/json'
    },
    success: function (response) {
        var order = Ext.decode(response.responseText);
        ...
    }
});

在某些情况下,ext-all.js 中有错误

onStateChange : function(request) {
    if (request.xhr.readyState == 4) {
        this.clearTimeout(request);
        this.onComplete(request);
        this.cleanup(request);
    }
},

其中请求没有属性 xhr,因此 request.xhr.readyState 抛出异常“无法读取未定义的属性‘readState’”。并非所有请求都会出现此错误,并且不会影响站点工作(成功检索响应)。有时这个错误根本不会出现。所有请求的超时默认设置为 30 秒,每个请求大约需要 1.5-2 秒。我正在使用 Google Chrome 21。请您告诉我为什么会这样。

4

1 回答 1

2

当且仅当您有断点或“调试器”时,问题似乎才会发生;加入与 AJAX 相关的任何内容。对我来说,它发生在 Chrome 中,还没有尝试过其他浏览器。

在我的情况下,当我在加载事件处理程序中为商店设置断点时发生这种情况,如下面的代码示例。

但是,如果您在框架本身的 Ext onStateChange 函数内设置断点,也会发生错误。

如果禁用断点和debugger;调用可以消除错误,您可以放心地忽略它!

ExtJS 论坛上有一个类似的帖子。Sencha 可能会添加一个修复程序。

Ext.define('MyApp.controller.MyController', {
    extend: 'Ext.app.Controller',

    stores: ['Projects'],

    init: function () {
        this.getProjectsStore().addListener(
            "load",
            this.onProjectsStoreLoaded,
            this
        );
    },

    onProjectsStoreLoaded: function () {
        console.log('MyController: onProjectsStoreLoaded');

        debugger; // <- this causes the errors to appear in the console

        SomeOtherThingsIWantedToDebug();
    }
}
于 2012-12-03T22:01:42.087 回答