2012-06-27 53 views
0

我有一個關於jquery ajax()的問題。我創建了一個表格網格,並且需要使用Tab鍵在單元格之間跳過。網格被構造爲需要兩次調用Ajax(用於保存前一個單元格並在第二個單元格中顯示輸入)。 我的問題是,當有人使用標籤編輯單元格時,有時響應非常慢。正常響應大約是40-70ms,然後在相同的情況下響應超過1秒。爲什麼這是?在我看來,服務器沒有關注,因爲當編輯當前單元時出現延遲時,這個問題會更頻繁發生。長時間的響應不是由編輯的數據類型或類似的東西引起的。它看起來像它是完全隨機的.. 我不想重拍網格,因爲一切運作良好,除了這個問題... 謝謝!jquery ajax響應有時很慢

+0

你說「服務器沒有注意力......」你有沒有研究與服務器的交流,例如使用Firebug,Chrome的開發人員工具或Fiddle? – fvu

+0

是的,但我找不到原因..標題和交流數據在緩慢和快速的情況下是相同的。 – Michal

+0

和時間呢?服務器的響應時間是否有顯着差異?如果是這樣,你將不得不看服務器端。 – fvu

回答

1

我看到了兩種可能的方法來解決這個問題。

  1. 模塊性。如果可以的話,將網格隔離爲沙箱原型,除了需要重現錯誤的地方外,沒有其他任何東西被實現。如果你的代碼是模塊化的,這很容易,如果不是這樣的話可能不可能。

    隔離行爲的第二種方法是實際從服務器斷開連接。這就是我的意思:可以修改你的ajax來簡單地返回一個'模擬'對象。這樣您就知道沒有延遲或意外的數據類型。這個概念被稱爲「數據模擬」,與測試驅動開發設置類似。這將證明,如果您的請求響應回調中出現錯誤。但是,我不認爲這是事實。

  2. 活動。出於某種原因,您的描述聽起來可能與事件相關。如果有東西被破壞,將網格隔離爲原型可能意外地解決了這個問題。所以這裏是我在這種情況下的建議:

    A.測試跨瀏覽器的錯誤情況。事件在不同瀏覽器中的行爲可能會有所不同。這可能會給你提示根本原因。

    B.步驟 - 調試你的代碼。如果一系列事件正在產生,或者如果另一個處理程序正在進入,那麼最好的辦法就是在運行時捕捉它。 C. Chrome,右鍵單擊,檢查元素,腳本選項卡並設置斷點是一個強大的工作流程,可幫助解決此問題。

    D.有一個自定義事件需要stopPropagation()或preventDefault(),它會將附加事件動作與DOM堆棧處理程序鏈接分開。這可能會也可能不是這樣,因爲我提到它的原因是 - 當我在過去遇到它時,它最初看起來是隨機的並且難以再現。 Here is a link to this information on MDN

希望幫助! Nash