2012-08-14 75 views
6

我的網站是使用Ext JS 4.1框架和ASP .Net MVC v3製作的。當呈現新框架時,有19個單獨的AJAX請求用於檢索JSON格式的數據。所有請求都很熟悉,並由Ext.Ajax.request()完成。例如:request.xhr在Ext JS中未定義

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. 您能否介紹一下爲什麼會發生這種情況。

+0

這真是連線。如果您查看Chrome開發人員工具的網絡/ XHR標籤,您是否100%確定所有網址都有效,所有服務器調用都毫無例外地返回,並且所有響應都返回正確的數據? – Izhaki 2012-08-15 00:58:47

+0

大多數瀏覽器具有每個域約6個併發請求的上限。如果你一次發送所有19個請求,事情可能會失控。你可以嘗試手動限制請求數量嗎?說,發送下一個6之前等待6完成?不知道這是否能解決問題,但這是一個開始。 – Eric 2012-08-22 17:20:50

+0

@Izhaki,Web開發者工具顯示所有的URL都是正確的,並且在1.5秒之後獲取最大響應。奇怪的是,只有7次的1次給出了這樣的錯誤。其他是正常的。 – 2012-08-27 13:38:40

回答

2

當且僅當您有斷點或「調試器」時,纔會出現此問題。與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(); 
    } 
}