【问题标题】:Using JS to connect to an API and then output the JSON response使用 JS 连接 API,然后输出 JSON 响应
【发布时间】:2017-03-10 17:58:53
【问题描述】:

我正在尝试通过连接到http://postcodes.io/ 邮政编码验证服务来使用 JS 进行英国邮政编码验证。

当我发布到 api.postcodes.io/postcodes/POSTCODEVARIABLE/validate 时,我应该收到 200 响应和“真”或“假”的结果,具体取决于邮政编码是有效还是不是。

但是,当我尝试接收数据(JSON 格式)时,我在控制台中收到错误消息:

 "Uncaught SyntaxError: Unexpected token o in JSON at position 1"

这是我的代码,如果有人能指出我哪里出错了,那就太好了。

var cpostcode = 'RG1 8BT';
var cpostcode = cpostcode.replace(/\s+/g, '');
var myNewURL = 'https://api.postcodes.io/postcodes/' + cpostcode + '/validate';

var pcapi = new XMLHttpRequest();


pcapi.onreadystatechange = function() {
if (pcapi.readyState == XMLHttpRequest.DONE) {
    alert(pcapi.responseText);
    }
}

pcapi.open("GET", myNewURL, true);
pcapi.send(null);

var xyz = JSON.parse(pcapi);

console.log(xyz);

【问题讨论】:

  • 你解析的不是结果,而是XMLHttpRequest对象。
  • 刚刚更新了脚本。

标签: javascript json


【解决方案1】:

就像@Youssef 说你想登录.responseText。您会收到该脚本错误,因为pcapiXMLHttpRequest 对象,并且JSON.parse() 尝试解析的json 无效。如果您想了解更多关于您可以使用pcapi 对象做什么的信息,请查看console.log(pcapi),您可以查看它的{keys:values} 或直接查看read

JSON.parse() 将传递给函数的任何 JSON 字符串转换为 JSON 对象。

确实没有“JSON 对象”这样的东西。 JSON 规范是一种将数据编码为字符串的语法。 ... JSON 是 JavaScript 的对象文字符号的子集。换句话说,有效的 JSON 也是有效的 JavaScript 对象文字表示法,但不一定相反。 - stackoverflow

var cpostcode = 'RG1 8BT';
var cpostcode = cpostcode.replace(/\s+/g, '');
var pcapi = new XMLHttpRequest();

var myNewURL = 'https://api.postcodes.io/postcodes/' + cpostcode + '/validate';

pcapi.open("GET", myNewURL, false);
pcapi.send();

var xyz = JSON.parse(pcapi.responseText);

console.log(xyz);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多