javascript - AJAX函数获取JSON数据

标签 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;
     }

该函数执行了我想要的所有操作,但我被告知永远不要将 false 传递给 AJAX 请求,因为会阻塞。这个功能似乎有些问题,但我不知道如何改变它。我应该改变它吗?如果是这样,怎么办?

最佳答案

您不能像这样返回它,这是一个异步操作,这意味着您的 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();
}

然后你这样调用它:

getJSON("something.json", function(data) { 
  //use data, your json object/data
});

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

关于javascript - AJAX函数获取JSON数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4273498/

相关文章:

AJAX 在 jQuery 1.8.3 中工作,但在 1.9.1 中不工作

java - 我的 ajax POST 没有发送到我的 servlet

json - 如何使用 SwiftyJson 解析 JSON

javascript - jQuery:可以使用对象并序列化来传递参数吗?

mysql - 从 MySQL JSON 数组中获取不同的值

javascript - 使用 if/else 语句将真/假显示为是/否 jquery

javascript - 如何从对象方法内的函数访问对象的属性?

javascript - 在 JavaScript 中读/写文件

javascript - 'GET_LIST' 的 dataProvider 可能是错误的

javascript - 有没有办法打印一个对象的所有方法?