2013-04-09 35 views
2

我有一個奇怪的問題,這並不總是,但有時候會出現相同的請求。 在我的網站(localhost)我有一個ExtJS商店自動加載,並且在頁面加載(按F5按鈕)後,它從服務器上的一些處理程序(* .ashx)中讀取JSON。處理程序從數據庫獲取數據並將其序列化爲JSON。它工作4次5按F5。第5次json-reader顯示成功= false和0長度數據。ExtJS:響應過快的處理程序有時會失敗

如果我使用時間延遲處理,如:

System.Threading.Thread.Sleep(1000); 

它的工作原理的50. 49倍,但它是怪異設置等待時間在我的迴應,當我試圖讓網站速度更快。

請幫忙或問我沒有關於問題的足夠信息!

這裏是我的js的樣本:

storePrefixes.on({ 
     'beforeload': function() { 
      //... 
     }, 
     'load': { 
      fn: function() { 
       if (storePrefixes.data.items.length > 0) 
        // ... working with response 
       else 
        // here is a problem 
      }, 
      single: true 
     } 
    }); 

而且還有服務器代碼:

<%@ WebHandler Language="C#" Class="GetPrefixesInRD" %> 

using System; 
using System.Web; 
using BCR.BLL; 

public class GetPrefixesInRD : IHttpHandler, System.Web.SessionState.IReadOnlySessionState 
{ 
    private readonly PrefixNewBLL prefixeBLL = new PrefixNewBLL(); 
    private readonly Newtonsoft.Json.JsonSerializer serializer = new Newtonsoft.Json.JsonSerializer(); 

    public void ProcessRequest(HttpContext context) 
    { 
     var prefixes = prefixeBLL.GetPrefixesByExistPrefixInAccountingDocs(null, 1, false); 
     prefixes.Sort((x, y) => String.CompareOrdinal(x.Prefix, y.Prefix)); 

     context.Response.ContentType = "application/json"; 
     context.Response.Clear(); 
     context.Response.BufferOutput = true; 
     serializer.Serialize(context.Response.Output, new { root = prefixes, total = prefixes.Count }); 
     context.Response.Flush(); 
     context.Response.End(); 
    } 

    public bool IsReusable { get { return false; } } 
} 
+1

如果減慢服務器代碼有助於解決問題,那麼問題出在您的服務器代碼上。顯示該代碼將爲您提供更好的答案。我懷疑你的數據庫會鎖定某些東西。你寫出數據訪問期間發生的任何異常嗎? – nunespascal 2013-04-09 11:07:43

+0

感謝您的回答,但我的服務器代碼中沒有例外,我剛剛檢查過它。此外,我編輯我的帖子與我的服務器代碼更好的幫助 – 2013-04-09 11:36:40

+0

什麼是服務器響應?您可以在Network選項卡的Developer Tools中查看Chrome瀏覽器中的JSON數據,並檢查請求。這至少可以幫助您確定當Ext給您錯誤時服務器響應錯誤,或者您的客戶端存在問題時。 – oldwizard 2013-04-19 07:39:32

回答

0

調試時,我會檢查this.isLoading(),看看它是否仍然在努力加載奇怪的人。將所有內容移至datachanged事件可能會更好。如果您需要分析商店,請使用console.dir(Ext.apply({},this));在運行時獲取快照。

相關問題