它是空的,因为在调用getXml时,ajax请求尚未完成,请记住ajax是异步的.解决它的一种方法是强制它同步:
$.ajax({
async: false,type: "GET",success : function(data) {
xml = data.html;
alert(xml); // WORKS
}
});
回应评论:
I want perform AJAX onclick,then store data.html for other mouse events
var dataStore = (function(){
var html;
function load(){
$.ajax({
async: false,success : function(data) { html = data.html; }
});
}
return {
load : function() {
if(html) return;
load();
},getHtml: function(){
if(!html) load();
return html;
}
}
})();
$(element1).click(function(){
dataStore.load();
});
$(element2).click(function(){
var html = dataStore.getHtml();
// use html
});