我有一些jquery正在从xml文件中加载一些信息以用作Dictionary,然后是一些json。我目前有代码工作但是它必须在加载json之前等待xml加载成功。我想要做的是加载xml和json,将数据存储在变量中,然后当两个加载另一个函数时。这可能吗?
这是我目前的代码......
$(document).ready(function () {
var dict = {};
$.ajax({
type: "GET",
url: "/_layouts/SiteLocations.xml",
dataType: "xml",
success: function (xml) {
$(xml).find('type').each(function () {
var key = $(this).find('key').text().replace(/ /g, '_');
var definition = $(this).find('definition').text();
//assign key and definition to dictionary
dict[key] = definition;
});
getsites(dict);
}
});
});
function getsites( dict) {
$.getJSON('/_layouts/SiteLocations.ashx', function (json) {
//handle data
$.each(json, function (i, item) {
//create web friendly id
var sitetype = item.Type.replace(/ /g, '_');
//check if list exists, if not create
if ($('ul[name=' + sitetype).length) {
//add list item
$('ul[name=' + sitetype).append('<li><a href="' + item.URL + '">' + item.Title + '</a></li>');
}
else {
//create list and add item
$('#ListContainer').append('<div id="' + sitetype + '"></div>');
$('#' + sitetype).append(dict[sitetype] + '<br />');
$('#'+sitetype).append('<ul name="' + sitetype + '" />');
$('ul[name=' + sitetype).append('<li><a href="' + item.URL + '">' + item.Title + '</a></li>');
}
});
});
}
答案 0 :(得分:2)
是的,你可以jQuery deferred objects:
$.when( getJSONstuff, getXMLstuff ).then( function(jsonResp, xmlResp){
// do stuff here
})
其中getJSONstuff
和getXMLstuff
是您的职能。
当从服务器返回两个响应时,将触发[匿名]回调。
编辑:订单已修复。