I';我在进行API调用和接收JSON响应时遇到JavaScript问题

I';我在进行API调用和接收JSON响应时遇到JavaScript问题,javascript,jquery,json,rest,get,Javascript,Jquery,Json,Rest,Get,我在localhost上托管了一个RESTful API,在浏览器中运行时,该API会返回如下内容: { "ContactMethod": "Email", "Zip": "68504", "State": "Illinois", "LastName": "McCarthy", "BestTimes&quo

我在localhost上托管了一个RESTful API,在浏览器中运行时,该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:请注意,以上是模拟数据,没有人的实际联系信息。

我有一个用JavaScript和jQuery1.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);
警报从未出现过。我试过这个,从这里开始:

警报(myArr)
从未发生过,因此请求一定有问题,对吗?我尝试此操作时也没有收到警报:

function getUserDetails(){
  $.getJSON("myurl", function(result){
    $.each(result, function(i, field){
        alert(field);
    })
  });
}
我还尝试过到处插入
jQuery.parseJSON()
,但运气不好。我的团队正在尝试完成一些同事在离开前无法完成的事情,我们中没有人对JavaScript了解很多。如果能得到任何帮助,我们将不胜感激

编辑1:根据评论中的建议,我在ChromeDevTools中检查了请求。状态是200 OK

EDIT2:使用此选项,我们可以获得一个读为
[object object]
的警报

function getUserDetails(){
  var data = $.getJSON("myurl");
  //var obj = $.JSON.parse(data);
  //var obj = eval ("(" + data + ")");
  alert(data);
  return data;
}
在小部件中,它给了我们一些胡言乱语:


那就更近了,对吧?当我们实现任何一个注释掉的行时,它会返回到不工作状态。

您没有返回数组。所以,每一美元都没有意义

试试这个:

var url = "your_url";

function getUserDetails(){
  $.getJSON(url, function(result){
        alert(result);
  })
.fail(function( jqxhr, textStatus, error ) {
    var err = textStatus + ", " + error;
    console.log( "Request Failed: " + err );
})
  .always(function() {alert( "complete" );});
}

按F12,然后转到“网络”选项卡。刷新页面/再次调用javascript,并确保收到200个请求。您是否尝试过在DevTools(Chrome或Firefox)中检查网络选项卡?这至少可以告诉您请求是否完成。检查控制台以查看是否有任何请求实际发生,并尝试将
.catch
添加到您的承诺中,以防被拒绝。由于您只有
提醒
才能成功,请求显然是失败的-如前三条评论所示,检查控制台如果上述关于使用“网络”选项卡的陈述对您没有意义,请在
getUserDetails
函数中,将
警报
移动到
$上方。每个
并警报
结果
,以指示您是否收到了响应正文。谢谢!这真的很有帮助。它显示“错误”和“完整”警报。你认为我应该如何进行故障排除?我知道API的响应状态是200 OK,并且它返回的是有效的JSON。好吧,您不太可能得到200状态和“错误”警报。你能在浏览器中发布显示你的开发者工具的回复正文吗?我刚刚更新了.fail方法。这将向您显示更多详细信息。根据您的第一个建议,在没有更新的.fail方法的情况下,“错误”和“完成”警报都会显示。使用更新的.fail方法,仅显示“完成”警报。在开发者工具中,它显示状态为200 OK,但在响应选项卡下,它显示“此请求没有可用的响应数据”。当URL键入到浏览器中时,开发者工具中查看的响应是有效的JSON。对不起。你能改变这个:“console.log”(“Request Failed:+err);”这样的警报:“alert”(“Request Failed:+err);”然后看看它是否显示了什么。
var url = "your_url";

function getUserDetails(){
  $.getJSON(url, function(result){
        alert(result);
  })
.fail(function( jqxhr, textStatus, error ) {
    var err = textStatus + ", " + error;
    console.log( "Request Failed: " + err );
})
  .always(function() {alert( "complete" );});
}