var rowData = [];
function someName() {
JsonClient.onload = function () {
rowData.push("sasas");
rowData.push("sasas1");
rowData.push("sasas2");
rowData.push("sasas3");
};
return rowData;
}
这会返回一个空的rowData。为什么呢?
伙计们在发布
时,这是一个错误的错误答案 0 :(得分:3)
永远不会调用函数someName
(例如someName();
)。由于永远不会调用它,因此永远不会执行push
语句。
即使被调用,someName
函数也只是为JsonClient.onload
分配一个匿名回调函数。您的代码没有向我们显示JsonClient
是什么,但似乎可以安全地假设它是HTTP响应的事件处理程序。在浏览器收到HTTP响应之前,不会调用该函数,此时return
语句已经执行。 您无法从Ajax请求返回,您必须处理回调本身的数据。
答案 1 :(得分:1)
你有一个函数声明一个匿名函数,直到你的JsonClient加载后它才会执行。
您需要这样做:
var rowData = [];
function someName(){
JsonClient.onload = function(){
rowData.push("sasas");
rowData.push("sasas1");
rowData.push("sasas2");
rowData.push("sasas3");
useRowData(rowData);
};
// here I would expect a call like JsonClient.send();
}
function useRowData(rowData) {
alert(rowData);
}
someName(); // execute the actual function
答案 2 :(得分:0)
你忘了关闭你想要推送的每个字符串的引号..一旦你这样做,它将返回一个字符串数组。
答案 3 :(得分:0)
你没有关闭字符串...这应该有效 var rowData = [];
function someName(){
JsonClient.onload = function(){
rowData.push("sasas");
rowData.push("sasas1");
rowData.push("sasas2");
rowData.push("sasas3");
};
return rowData;
}