javascript - 如何在没有 jQuery 的情况下解析 JSON

标签 javascript json

一些信息 - 我正在创建一个自动完成功能,它从 json feed 获取数据。 JSON 部分工作正常,结果有效。

当我获取它时,我使用 json2.js 并运行 JSON.parse。当我尝试输出时,它告诉我它(包含解析的 JSON 文本的对象)实际上是未定义的。

如果我对对象运行警报然后输出,它就会起作用。这可能是一件非常简单的事情。但这是令人困惑的一点,因为如果我向对象发出警报,它就可以正常工作

我知道它不会对所有事情都起作用,我只是暂时让它起作用,然后我会改进它。

谢谢您,如果我可以提供更多信息,我会提供。

代码

//sURL takes a search term that's passed into the function

var JSON_object = {};
var oRequest = new XMLHttpRequest();
var sURL  = "datalinkhere"+input.value;

oRequest.open("GET",sURL,true);
oRequest.setRequestHeader("User-Agent",navigator.userAgent);
oRequest.onreadystatechange = function () {
    if (oRequest.readyState == 4 && oRequest.status == 200)
    {
        JSON_object = JSON.parse( oRequest.responseText );
    }
};
oRequest.send(null);

suggestion(JSON_object,input);

function suggestion(inp,targetid)
{
    document.getElementById('autosuggest').style.display='block';
    document.getElementById('autosuggest').innerHTML=inp[1].namefield;
}

最佳答案

问题是没有提醒 json 或不是你的代码的概念。 Ajax 请求异步工作,因此您的 oRequest.send 调用在数据加载之前不会阻塞,数据在后台加载。

所以你可以运气好,当下一行(建议调用)和你的代码工作时数据可用,否则你将得到一个 undefined variable 。

您必须异步编写代码:将建议调用直接放在 JSON.parse 调用之后,一切都会像魅力一样工作。

关于javascript - 如何在没有 jQuery 的情况下解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3666889/

相关文章:

javascript - 连续或无限滚动,接近页面底部时加载更多内容

javascript - 显示最后一个索引箭头问题

javascript - 用于检测用户浏览器、操作系统、语言、地理位置的 JS 插件?

javascript - 如何发现具有最大字体大小的元素

iPhone/iOS JSON解析教程

javascript - 需要 lodash 组合的帮助才能获得以下对象

jquery - 部分 View 与 Json(或两者)

ios - 在 Swift 中创建特定的 JSON 结构

ios - Json 响应给出了错误的数据

PHP JSON数组解码并将数据存储到mysql