我試圖更新div的內容,但它並不總是工作。我不確定它是否與我的問題有關,但我正在使用jQuery Mobile。動態更新div元素的內容需要兩次或三次嘗試
背景:
我有一個選擇菜單,它是用來選擇一個位置。我也有一個按鈕,用於獲取有關所選位置的信息。 Ajax用於獲取數據,這些數據顯示在我的頁面的div元素中。我發現我需要點擊按鈕兩次才能更新div元素。奇怪的是,如果我在更新div之前添加警報,它可以正常工作(即,我只需要按一下按鈕)。
代碼:
$(function() {
$("#weather_submit").click(function(){
$.mobile.pageLoading();
var formData = $("#getWeatherForm").serialize();
$.ajax({
type: "POST",
url: "weather.php",
cache: false,
data: formData,
success: onSuccessWeather,
error: onError
});
return false;
});
});
function onError(data, status) {
$.mobile.pageLoading(true);
alert('error');
}
function onSuccessWeather(data, status) {
$.mobile.pageLoading(true);
//alert(data); // if I use this line of code I never have a problem (i.e. the weatherSummary div updates appropriately
data = $.trim(data);
$("#weatherSummary").html(data);
}
我最初發現使用我的Android EVO這個問題,但我只是試着Firefox和它太發生。
我懷疑這是與.html()出於某種原因沒有正確地工作有關。
任何想法?
謝謝!
作爲一個實驗我剛剛更新了點擊處理程序不使用ajax,而是直接更新div(我使用了一個計數器,並在奇數時顯示「奇數」,甚至在偶數時顯示「偶數」)。每次都能很好地工作。我現在很困惑。我知道ajax正在工作,因爲我在onError和onSuccessWeather處理程序中發出了警報。有任何想法嗎? – user418775
'#weatherSummary'元素是否總是存在,還是在某個時刻生成的?我懷疑有些事情沒有及時加載。嘗試在Firefox中檢查您的JavaScript錯誤日誌。 – Karl
這是個好主意。我直接在html中聲明它,所以我期望它存在,但也許它不存在。順便說一句,我只是通過將alert()後的.html(數據)和東西總是正常工作來調整onSuccsessWeather。我會檢查錯誤日誌。謝謝。 – user418775