一些信息 - 我正在创建一个自动完成功能,它从 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/