我正在爲頁面創建測試,並且有必要使用jQuery來更改頁面的控制版本上的元素,以獲得每種不同的體驗。如何使用Ajax來填充外部加載的div(jQuery)
我正在使用jquery從外部頁面加載一個元素並替換一個div。但是,在外部頁面上,它使用ajax調用api來填充div,所以我使用ajax調用複製了該函數。
我認爲它試圖在新div實際加載到頁面之前進行ajax調用。
我試着移動函數,在ajax調用中包裝加載函數,但它仍然不起作用。
我可能會錯過一些東西很明顯,但這裏是我的代碼部分:
$('.replace-div').load('external.html #replace-div');
function waitForLoad() {
if ($('#replace-div')) {
var object;
$.ajax({
url: "https://api.com",
async: false,
success: function(result) {
object = result;
var variable1 = object["blah"][0].value,
var variable2 = object["blah"][0].value,
var variable3 = object["blah"][0].value,
var variable4 = object["blah"][0].value,
$('newElement').attr('href', variable1);
$('newElement2').attr('src', variable2);
$('newElement3').attr('href', variable3);
$('newElement4').text("text" + variable4 + "more text");
}
});
} else {
setTimeout(waitForLoad, 15);
}
}
waitForLoad();
我沒有得到任何錯誤,在控制檯中,當我粘貼上述waitForLoad功能到控制檯,它填充完好。顯然這是在頁面加載新的div後,所以我只需要知道如何使ajax調用等待負載。
我試過.ajaxComplete(),但它沒有幫助。 $(function(){});也不起作用
這個工作!幾小時的谷歌搜索以某種方式沒有給我任何接近這個答案,但我知道這是明顯的東西! –
@HollyMichelle假設任何異步操作都需要一個回調參數或返回一個promise(在jQuery中,他們通常都會這樣做)。這是以理智的方式處理異步的唯一方法。 – Barmar