我想從服務器獲取一些數據並將其寫入全局數組中的JavaScript。然後在文檔準備好我想用這個數組來創建一些新的元素(選項)。我應該有這個數據的全局數組,因爲在第一次加載客戶端可以修改用戶界面使用這個數據。文檔準備好之前從服務器獲取AJAX數據(jQuery)
$(document).ready(function() {
UseAjaxQueryForFillGlobalArray();
MakingInterfaceUsingGlobalArray();
});
但我奇怪的行爲,當我調試頁面,我可以看到,方法MakingInterfaceUsingGlobalArray第一份工作,就在我把通過AJAX獲取數據與方法UseAjaxQueryForFillGlobalArray,我沒有新的界面(html選項)加載數據。
如果我這樣做:
UseAjaxQueryForFillGlobalArray();
$(document).ready(function() {
MakingInterfaceUsingGlobalArray();
});
然後在Firefox中工作正常,但在其他網絡瀏覽器在第一次加載不正確的(例如去這個頁面的鏈接)。但如果我通過F5刷新,我有正確的用戶界面,通過AJAX加載到全球JS陣列。
如何解決?也許我用完全不正確的方式?
後添加評論:
這是我的AJAX功能:
function UseAjaxQueryForFillGlobalArray(){
var curUserId = '<%= Master.CurrentUserDetails.Id %>';
var curLocale = '<%= Master.CurrentLocale %>';
$.ajax({
type: "POST",
url: "/segment.aspx/GetArrayForCF",
data: '{"userId":"' + curUserId + '","curLocale":"' + curLocale + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
//here is I doing parse my string from server and fill arrays.
}
});
}
你忘了實際添加鏈接到你的例子。 – 2013-05-10 12:08:09
向我們展示您的jQuery ajax代碼。有一個屬性('async')可能是你需要的。 – Codesleuth 2013-05-10 12:08:55
在旁註上:對於初始頁面渲染,我建議您在單個請求中傳輸所有需要的數據,而不是加載基本「空白」頁面,然後通過ajax將數據加載到該頁面中。 – 2013-05-10 12:10:56