所以......我正在尝试使用JavaScript来解析从PHP文件返回的对象。相关代码如下所示:
var name = document.getElementBId("name").value;
var XHR = new XMLHttpRequest();
XHR.open("GET', 'lookup.php?name=' + name, true);
XHR.onreadystatechange = function (){
try{
alert("Attempting to parse");
if ((XHR.readyState === 4) && (XHR.status === 200)) {
alert("Parsing");
var jsonresponse = JSON.parse(XHR.responseText);
alert("Is this being skipped?");
....
这是返回的php:
{
"name": ABC Elementary,
"addr": 3000 County Road 29 Alberta AL 36720-2817,
"county": Wilcox, "district": 6;
}
该程序应该为数学锦标赛提交学校名称,并在选择其名称后使用其余信息显示学校的地址,县和地区。我选择了ABC Elementary作为调试器,因为它很容易输入。
不幸的是,脚本不会超过这一点。我收到了alert("Parsing")
的提醒,但未收到来自alert("Is this being skipped?")
的提醒。我在XML.onreadystatechange()
内没有得到任何超过这一点的内容,尽管我仍然会收到来自区外的警报。
我的猜测是它与JSON.parse()
处理数据的方式有关,或者至少与该行有关。
另外,我知道其他人已经问过这个问题了,我一直在寻找这些答案,但似乎没有人知道JSON.parse()
对这些数据究竟做了什么。如果有人能够启发我,我将非常感激。
答案 0 :(得分:0)
根据我的理解,JSON.parse()接受一个字符串值,一个字符串化的对象并解析它。
要使JSON.parse()适合您的情况,我们希望返回的对象为:
{"name": "ABC Elementary", "addr": "3000 County Road 29 Alberta AL 36720-2817", "county": "Wilcox", "district": "6"}
...但我们希望用字符串包装作为解析的输入。
将此行添加到您的控制台并按Enter键,您将看到解析的结果:
JSON.parse('{"name": "ABC Elementary", "addr": "3000 County Road 29 Alberta AL 36720-2817", "county": "Wilcox", "district": "6"}');
有关详细信息,请参阅可能能够更好地解释它的documentation。
答案 1 :(得分:0)
{
"name": ABC Elementary,
"addr": 3000 County Road 29 Alberta AL 36720-2817,
"county": Wilcox, "district": 6; /* the ; here must delete */
}
如果这是你的json字符串。格式错误(见上面的评论)
你可以使用alert(xhr.responseText)或console.log(xhr.responseText)来确保你获得json
你想要的字符串。
打开浏览器调试工具以检查控制台消息,
如果您使用旧浏览器,则不支持JSON.parse
你可以在这里阅读
和