Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AJAX全局变量?(Javascript)_Javascript_Ajax - Fatal编程技术网

AJAX全局变量?(Javascript)

AJAX全局变量?(Javascript),javascript,ajax,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);

我认为这是一个全局变量问题。看这个:

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;
函数更多元素(){
var-ret=[];
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
var JSONObject=JSON.parse(xmlhttp.responseText);

for(i=0;iAjax是异步的。因此,当您在
xmlhttp.send()之后立即调用时,将不会设置
ret数组。

设置
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);
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
var JSONObject=JSON.parse(xmlhttp.responseText);

对于(i=0;i您需要了解回调是什么…即使您的变量范围是正确的,也要看一看。它可能会帮助您更好地理解变量范围和全局变量。;)是的,这很有效!谢谢。但是如果我尝试在主函数->函数more_elems()上返回ret怎么办.因为这就是我试图实现的。在该函数上返回ret数组。希望它有帮助。你不能这样做,因为我说过Ajax是异步的,当你在函数末尾返回时,
ret数组将不会设置值。希望它有帮助。不要介意将它标记为正确答案;)好的……那我得想办法了。谢谢,我会的:)