意外结束JSON输入

时间:2018-05-19 05:48:52

标签: javascript json http parsing

我正在尝试使用javascript对谷歌apis进行简单的调用。

我正在尝试的工作代码示例在这里:

function Get(myurl) {
  var Httpreq = new XMLHttpRequest();
  Httpreq.open('GET', myurl, true);
  Httpreq.send();
  console.log(Httpreq.responseText);
  return Httpreq.responseText;
}

url = "https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1331161200";
tz = JSON.parse(Get(url));

它一直给我一个错误,我从控制台日志中知道Httpreq是空的,但为什么呢?如果我直接去网址,那里显然有数据。

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要使用Httpreq.onreadystatechange()函数来侦听响应,因为这是一个异步函数,您不会立即从API获取数据,因此return语句在Get()内无效功能。

function Get(myurl) {
 var Httpreq = new XMLHttpRequest();
  Httpreq.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      console.log(this.responseText);
    }
  };
  Httpreq.open('GET', myurl, true);
  Httpreq.send();
}

var url = "https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1331161200";
var tz = Get(url);