AJAX全局变量? (JavaScript)的

时间:2014-02-26 19:50:43

标签: javascript ajax

我认为全球变量问题。看这个:

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对象的数组。我不确定问题是什么= /。

提前致谢。

1 个答案:

答案 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);
}