日期:2014-05-16 浏览次数:20713 次
Whenever you want to use the data retrieved from ajax, you must use it in the callback function which is triggered when the ajax call receives the response.? This is a common practice.
?
But if the ajax call to retrieve data resides in a common function, it would be a little more complicated. Below I give an example to explain this.
?
function DataUtil(callBack) { var me = this; $.ajax({ url : "../json/test.json", success : function(data) { me.data = $.parseJSON(data); callBack(me); } }); // can only be used in the callBack me.getName = function() { return me.data.name; }; // can only be used in the callBack me.getDescription = function() { return me.data.description; }; } function displayRetrievedData() { var dataRetrieved = {}; var callBack = function(dataUtil) { dataRetrieved.name = dataUtil.getName(); dataRetrieved.description = dataUtil.getDescription(); console.log("in the call back:"); console.log(dataRetrieved);// gets the correct data from the json }; DataUtil(callBack); console.log("out the call back:"); console.log(dataRetrieved);// not sure it gets the data from the json. It // depends the ajax call speed } function canNotGetCorrectData() { var dataRetrieved = {}; var dataUtil = new DataUtil(function() { }); dataRetrieved.name = dataUtil.getName();// not sure the data is ready dataRetrieved.description = dataUtil.getDescription();// not sure the data is ready console.log("Can not get the data:"); console.log(dataRetrieved); } displayRetrievedData(); canNotGetCorrectData();?
?
?