AJAX函数获取JSON数据

Aki*_*nos 0 javascript ajax json

我制作了一个脚本,使用AJAX从我们服务器上的文件中获取JSON数据,但是我将它放入函数中时遇到了麻烦.

这是我的代码:

function getJSON (file)
    {
      var request = AjaxRequest();
      var json = "";
      request.onreadystatechange = function ()
      {
         if(request.readyState==4 && request.status==200)
            {
              json = JSON.parse(request.responseText);
            }
      }
      request.open("GET", file, false);
      request.send();
      return json;
     }
Run Code Online (Sandbox Code Playgroud)

该函数执行我想要的所有内容,但我被告知不要因为阻塞而将false传递给AJAX请求.这个功能似乎有些不对劲,但我不知道如何改变它.我应该改变吗?如果是这样,怎么样?

Nic*_*ver 6

你不能像这样返回它,它是一个异步操作,这意味着你在以后json = JSON.parse(request.responseText)发生的事情,当服务器响应数据...很久你返回..相反,你可以传入一个接受数据的函数,如下所示:

function getJSON (file, callback)
{
  var request = AjaxRequest();
  request.onreadystatechange = function ()
  {
     if(request.readyState==4 && request.status==200)
     {
       callback(JSON.parse(request.responseText));
     }
  }
  request.open("GET", file, false);
  request.send();
}
Run Code Online (Sandbox Code Playgroud)

然后你这样称呼它:

getJSON("something.json", function(data) { 
  //use data, your json object/data
});
Run Code Online (Sandbox Code Playgroud)

这样就可以在数据可用时使用它,将数据传递给下一个函数......这就是异步调用的行为方式.