0

我正在尝试使用函数向我的服务器调用 ajax 请求以获取 json 数据。如果我resp在 ajax 函数中控制变量,它将成功显示数据。如果我尝试将 ajax 函数设置为一个变量,然后控制台该变量返回未定义。任何想法让函数请求数据然后将 ti 设置为要控制的变量?

function jsonData(URL) {
var xhr = new XMLHttpRequest();
xhr.open("GET", URL, true);
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4) {
    var resp = JSON.parse(xhr.responseText);
    return resp;
  }
}
xhr.send();
}

jsonString = jsonData(http://mywebsite.com/test.php?data=test);

console.log(jsonString);
4

1 回答 1

3

这实际上很简单..将您的调用更改为同步..

xhr.open("GET", URL, false);

话虽如此,这将阻止浏览器,直到操作完成,如果您可以使用回调代替它可能是首选。

function jsonData(URL, cb) {
  var xhr = new XMLHttpRequest();
  xhr.open("GET", URL, true);
  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
      var resp = JSON.parse(xhr.responseText);
      cb(resp);
    }
  }
  xhr.send();
}

jsonData("http://mywebsite.com/test.php?data=test"
        , function(data) { console.log(data); });
于 2012-11-14T05:35:13.280 回答