我有JavaScript问题进行API调用并收到JSON响应

时间:2015-07-09 14:22:49

标签: javascript jquery json rest get

我在localhost上托管RESTful API,当在浏览器中运行时,返回如下内容:

{ 
  "ContactMethod": "Email",
  "Zip": "68504",
  "State": "Illinois",
  "LastName": "McCarthy",
  "BestTimes": "Afternoon",
  "Address": {
    "Zip": "68504",
    "State": "Illinois",
    "City": "Haylon",
    "Line1": "1388 Dooleys Terrace",
    "Line2": "",
    "Line3": ""
  },
  "BestDays": "Wednesday",
  "FirstName": "Roy",
  "Email": "rmccarthy@yah00.com",
  "Phone": "4812212563"
}

我可以请求纯文本或应用程序JSON。我的API使用的是这种类型的JSON:http://json.org/example请注意,以上内容是模拟数据和任何人的实际联系信息。

我有一个用JavaScript和jQuery 1.11.3编写的小部件,我希望它能够发出GET请求并使用JSON响应。

我试过这个:

var getJSON = function(url) {
  return new Promise(function(resolve, reject) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'json';
    xhr.onload = function() {
      var status = xhr.status;
      if (status == 200) {
        resolve(xhr.response);
      } else {
        reject(status);
      }
    };
    xhr.send();
  });
};

getJSON('myurl').then(function(data) {
  alert(data.result);

警报永远不会发生。我从这里尝试过这个:http://www.w3schools.com/json/json_http.asp

function getUserDetails(){
  var request = new XMLHttpReqest();
  var url = "myurl";

  request.onreadystatechange = function() {
    if (request.readyState == 4 && request.status == 200) {
      var myArr = JSON.parse(request.responseText);
      alert(myArr);
    }
  }
  request.open("GET", url, true);
  request.send();
}

alert(myArr)永远不会发生,所以请求一定有问题,对吧?当我尝试这个时,我没有收到警报:

function getUserDetails(){
  $.getJSON("myurl", function(result){
    $.each(result, function(i, field){
        alert(field);
    })
  });
}

我也试过在这里和那里投掷jQuery.parseJSON(),没有运气。我的团队正试图完成一个同事离开之前无法完成的事情,而且我们都不了解JavaScript。我们感谢您提供的任何帮助!

EDIT1:根据评论的建议,我在Chrome DevTools中检查了该请求。状态是200 OK。

enter image description here

EDIT2:使用此功能,我们可以获得一条提示符[object Object]

function getUserDetails(){
  var data = $.getJSON("myurl");
  //var obj = $.JSON.parse(data);
  //var obj = eval ("(" + data + ")");
  alert(data);
  return data;
}

在小部件中,它给了我们一些胡言乱语:

enter image description here

这样更接近吧?当我们实现任何一个注释掉的行时,它就会回到无效状态。

1 个答案:

答案 0 :(得分:1)

您没有返回数组。所以,$ .each毫无意义。

试试这个:

var reader = new Mp3FileReader(ms)
var waveOut = new WaveOutEvent();
waveOut.Init(reader);
waveOut.Play();