继续
JQuery – Storing ajax response into global variable
接受的解决方案不知何故对我不起作用.
$(document).ready(function() { var dataStore = (function(){ var xml; $.ajax({ type: "GET",url: "/?do=getcontentadm1n&category=homepage",dataType: "json",success : function(data) { xml = data.html; alert(xml); // WORKS } }); return {getXml : function() { if (xml) return xml; }}; })(); var somevar = dataStore.getXml(); alert(somevar); // UNDEFINED });
还有其他解决方案吗?
谢谢.
解决方法
它是空的,因为在调用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 });