在 Ext JS 中未定义 request.xhr
Posted
技术标签:
【中文标题】在 Ext JS 中未定义 request.xhr【英文标题】:request.xhr undefined in Ext JS 【发布时间】:2012-08-14 09:58:29 【问题描述】:我的网站是使用 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 秒。 我正在使用谷歌浏览器 21。 你能告诉我为什么会这样吗?
【问题讨论】:
这真的是有线的。如果您查看 Chrome 开发者工具的 Network/XHR 选项卡,您是否 100% 确定所有 url 都是有效的,所有服务器调用都毫无例外地返回,并且所有响应都返回正确的数据? 大多数浏览器的上限为每个域约 6 个并发请求。如果您同时发送所有 19 个请求,事情可能会失控。您可以尝试手动限制请求数量吗?说,等待 6 完成后再发送下一个 6?不确定这是否能解决问题,但这是一个开始。 @Izhaki,Web 开发人员工具显示所有 URL 都是正确的,并且最长在 1.5 秒后检索到响应。奇怪的是,只有 1 次 7 给出了这样的错误。其他正常。 @Eric Cook,现在请求总数为 14。有时他们都成功了。现在几乎所有这些都没有 XHR 错误。 【参考方案1】:当且仅当您有断点或“调试器”时,才会出现问题;加入与 AJAX 相关的任何内容。对我来说它发生在 Chrome 中,还没有尝试过其他浏览器。
在我的例子中,当我在加载事件处理程序中为商店设置断点时发生这种情况,如下面的代码示例。
但是如果你在框架本身的 Ext onStateChange 函数中设置断点也会发生错误。
如果禁用断点和debugger;
调用可以消除错误,您可以放心地忽略它!
There is a similar thread on ExtJS forums. Sencha might add a fix.
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();
【讨论】:
以上是关于在 Ext JS 中未定义 request.xhr的主要内容,如果未能解决你的问题,请参考以下文章
将 EXTJS 4.1 升级到 4.2... _incr_ 在 Ext.util.Observable 中未定义
Sequelize 错误:在 Index.js 中未定义 defineCall
当不应该在 discord.js 命令处理程序中未定义时,无法读取未定义的属性