Ajax Ext JS中未定义request.xhr

Ajax Ext JS中未定义request.xhr,ajax,xmlhttprequest,extjs4.1,readystate,Ajax,Xmlhttprequest,Extjs4.1,Readystate,我的网站是使用ExtJS4.1框架和ASP.NETMVCv3制作的。渲染新帧时,有19个单独的AJAX请求用于检索JSON格式的数据。所有请求都是熟悉的,由Ext.Ajax.request()发出。例如: Ext.Ajax.request({ url: getOrderLink, method: "GET", params: { recId: orderRecId }, headers: { 'Accept': 'application/json'

我的网站是使用ExtJS4.1框架和ASP.NETMVCv3制作的。渲染新帧时,有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秒。 我正在使用谷歌Chrome21。
您能告诉我发生这种情况的原因吗。

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

在我的例子中,它发生在我在加载事件处理程序中为下面的类似于存储的代码示例设置断点时

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

如果禁用断点和
调试器调用将删除错误,您可以安全地忽略它

Ext.define('MyApp.controller.MyController'{
扩展:“Ext.app.Controller”,
门店:[“项目”],
init:函数(){
此.getProjectsStore().addListener(
“加载”,
此.onprojects已存储,
这
);
},
onProjectsStoreLoaded:函数(){
log('MyController:onprojectssstoreload');

调试器;//这真的很好。如果您查看Chrome开发工具的Network/XHR选项卡,是否100%确定所有URL都有效,所有服务器调用都会毫无例外地返回,并且所有响应都会返回正确的数据?大多数浏览器每个域的并发请求上限为~6个。如果您一次发送所有19个请求e、 事情可能会失控。您能否尝试手动限制请求数?例如,等待6完成后再发送下一个6?不确定这是否能解决问题,但这是一个开始。@Izhaki,Web开发人员工具显示,所有URL都是正确的,响应最多在1.5秒后检索。奇怪的是,只有1时间为7时会出现这样的错误。其他的都是正常的。@Eric Cook,现在请求的总数是14。有时它们都成功了。现在几乎所有的请求都没有XHR错误。
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();
    }
}