2017-06-22 34 views
0

我有一個ajax調用返回插入到容器中的html代碼。等待AJAX​​響應完全就緒/呈現

現在我需要調用一個jQuery函數來設置庫的格式,但我找不到一種方法來確保jQuery函數等待returnedData被完全加載/呈現。

正如你可以看到我已經嘗試.ready()但它不起作用。我也嘗試了setTimeout,它實際上有效,但由於returnedData可能包含很多圖像,所以我無法使用它,因爲我不知道加載所有圖像需要多長時間。

任何想法?

$(document).ready(function() { 
    $.ajax(url, {type: 'POST', dataType: 'json', data: data, success: success_handler}); 
}); 

function success_handler(returnedData) { 
    $('.category-images-js').html(returnedData); 
    $('.category-images-js').ready(function() { 
     // Code to run after all data inside returnedData is fully ready/rendered 
    ); 
} 

SOLUTION: 這個線程:How to know if all elements in a DIV have been fully loaded?爲我工作,但我不得不做出變通,因爲我跑的代碼,裏面的時候returnedData數據完全準備好/渲染,使得每負載觸發3次圖片。

+0

嘗試** ajaxComplete()**處理程序。 http://api.jquery.com/ajaxcomplete/ –

+1

[如何知道DIV中的所有元素是否已完全加載?](https://stackoverflow.com/questions/26480844/how-to-know -if-all-elements-in-a-div-have-been-full-loaded) – Yannici

+0

_Code在returnedData中的所有html完全準備就緒/呈現後運行._你不明白你的意思。 'returnedData'是JSON,裏面沒有html。 – hindmost

回答

0

我做了我自己的AJAX功能,所以我希望它適合你:

function xhr(u, c) { 
    var x = new XMLHttpRequest(); 
    x.onreadystatechange = function(){ 
     if (x.readyState == 4 && x.status == 200){ 
      c(x.responseText) 
     } 
    }; 
    x.open("GET", u, true); 
    x.send() 
} 

U = URL

C =回調函數