我正在加載2個XML文檔,它們都成功運行函數,但第2個XML文檔的函數依賴於第1個完成。ajax加載2個XML文檔,按順序排列,無異步:false
如果我有異步:真:
1 XML
function XmlDataTypes() {
var result = null;
var scriptUrl = "http://domain.com/xml/test.XmlDataTypes?AccountId=" + AccountId;
$.ajax(
{
url: scriptUrl,
type: 'get',
dataType: 'xml',
async: true,
success: function (data) {
//create array to be used in second XML
for (var i = 0; i < xmlRows.length; i++) {
var dataType = xmlRows[i];
var dataTypeId = nodeValue(dataType.getElementsByTagName("DataTypeId")[0]);
var dataTypeName = nodeValue(dataType.getElementsByTagName("DataTypeName")[0]);
dataTypeArray.push({ dataTypeId: dataTypeId, dataTypeName: dataTypeName, position: i, markerArray: [] });
}
},
error: function onXmlError() {
alert("An Error has occurred.");
}
});
return result;
}
第二屆XML
function XmlAmenityData() {
var result = null;
var scriptUrl = "http://domain.com/xml/test.XmlAmenityData?AccountId=" + AccountId;
$.ajax(
{
url: scriptUrl,
type: 'get',
dataType: 'xml',
async: true,
success: function (data) {
//store this info in markerArray in dataTypeArray
},
error: function onXmlError() {
alert("An Error has occurred.");
}
});
return result;
}
XML數據可以按隨機順序加載,以便爲函數如果第一個文件沒有完成,第二個文件將會出錯。
如果我設置:
async: false
它工作正常,但我得到一個警告:
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience.
有沒有辦法解決,而無需使用:
async: false
謝謝,試圖實現這一點。但是第二個XML文檔沒有加載,我已經更新了我的代碼以顯示它之前的情況。 – JBoom 2014-12-19 14:30:37
不要忘記添加網址作爲參數了。 – MamaWalter 2014-12-19 16:26:23
感謝@MamaWalter,包括它。 – John 2014-12-22 08:27:57