簡體   English   中英

jQuery追加,等待渲染直到沒有超時

[英]jQuery append, wait till rendered with no timeout

我有一個用jQuery append方法將HTML附加到頁面的AJAX。 HTML有點大,我想獲取單元格的顏色,這些顏色是由CSS在同一HTML文檔中設置的。

我的問題是,如果我在append方法之后立即循環單元格,則所有單元格都沒有顏色,我必須等待幾秒鍾才能起作用。 現在,我正在執行超時以開始遍歷單元格,但是我不想這樣做。 我想知道1)為什么沒有用append渲染頁面,為什么append在html完全渲染之前返回,以及2)我有什么選擇。

我正在考慮在HTML的末尾放置一個間隔來檢查單元格的某些特定值,但是我對該方法並不滿意。

謝謝!

不要在AJAX響應上使用間隔。 如果您將超時設置為足夠長的時間,它們將起作用,但是您必須將超時設置為您想像的最大請求,即使在5秒后仍然有可能失敗。 同樣,如果請求花費一毫秒,則在另外的4.99秒(如果您的超時時間為5秒)內什么也不會發生。

AJAX函數具有多個參數。 其中一些是字符串(例如“ Content-Type:'application / json'”)。 有些是對象(例如data:{requestId: 999} )。 您還可以提供其他功能作為參數。 $.ajax()接受此類參數(稱為“回調”),並根據請求返回的內容執行。 您可以提供一個error:僅在出現錯誤(例如404或500)時執行的回調。 success:回調將在成功獲取內容后立即執行,無論是1毫秒還是5秒。 那可能就是你想要的。

無論您要將參數傳遞給$.ajax()函數的何處, $.ajax()提供以下內容:

//...other arguments

success: function(response){
    $('#myTable').html(response);
});

//..other arguments

如果/當服務器成功響應時,該函數將准確執行。 我應該提到,此回調可以接受自己的參數。 其中,請求的實際內容就是其中之一(在上面的示例中,第一個參數是response )。 無論您具有XML還是JSON甚至HTML,都將在response函數相應地起作用。

您可能已經在使用回調,但是由於沒有代碼,而且我看到“超時”與“ AJAX”一詞配對,因此我猜這是您的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM