我认为全球变量问题。看这个:
function more_elems() {
var ret = [];
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var JSONObject = JSON.parse(xmlhttp.responseText);
for (i=0;i<5;i++){
ret[i] =
{
id: JSONObject[i].id,
nombre: JSONObject[i].nombre,
mensaje: JSONObject[i].mensaje,
ult_m: JSONObject[i].ultima_modificacion
};
}
alert(ret);
}
}
xmlhttp.open("GET","somewesite.com",true);
xmlhttp.send();
return ret;
所以我试图返回ret数组,但它返回undefined。但是,如果我在xmlhttp.onreadystatechange = function()内部发出警报,它会显示带有json对象的数组。我不确定问题是什么= /。
提前致谢。
答案 0 :(得分:0)
Ajax是异步的。因此,在ret array
xmlhttp.send().
将不会被设置
有任何mehtod并在设置ret array
的值后传递值。如下所示,
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var JSONObject = JSON.parse(xmlhttp.responseText);
for (i=0;i<5;i++){
ret[i] ={
id: JSONObject[i].id,
nombre: JSONObject[i].nombre,
mensaje: JSONObject[i].mensaje,
ult_m: JSONObject[i].ultima_modificacion
};
}
onAjaxSuccess(ret);
}
}
function onAjaxSuccess(arr){
alert(arr);
}