我使用这个example希望在AJAX调用后返回数据。基本上我执行AJAX调用一个回调函数来处理并返回所需的最终数据。但是,当我执行代码时,为获取数据而分配的变量是未定义的,并且回调函数在AFTER后正确执行....
这是执行AJAX调用的函数:
function getgraphdata(callback){
$.ajax({
type: "GET",
url: "DiCAST_hourly.csv",
dataType: "text",
async: false,
success: callback,
error: function(){alert("Error")}
});
};
这是回调函数:
function processgraphData(allText) {
var result = [];
var allTextLines = allText.split(/\r\n|\n/);
for (var i=1; i<allTextLines.length; i++) {
if (allTextLines[i].split(",")[0] == 'LETO') {
var line = allTextLines[i].split(",");
for (var j = 1; j<line.length - 5; j += 5){
result.push([line[j],line[j+1],line[j+2]]);
};
break;
};
};
console.log("OK");
console.log(result);
return result;
};
这些是我执行此代码的行:
console.log("OKOK");
var result = getgraphdata(processgraphData);
console.log(result);
console.log("OKOK");
这就是浏览器返回的内容:
OKOK getinfo.js:135
OK getinfo.js:86
[Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3]] getinfo.js:87
undefined getinfo.js:137
OKOK
答案 0 :(得分:0)
这可以解决您的问题:
function getgraphdata(callback){
var theresponse;
$.ajax({
type: "GET",
url: "DiCAST_hourly.csv",
dataType: "text",
async: false,
success:function(response){
theresponse = processgraphData(response);
},
error: function(){alert("Error")}
});
return theresponse;