我有一个问题,我似乎不能查询我的JSON返回,我可以打印出整个响应,这是我的JSON响应,我只能在执行msgBox()提示时看到以下内容:
{ "Addresses" :
"[{
Building=Megatron Skyscraper,
BuldingId=1998,
AccountId=2000,
Number=007,
Name=Megatron
},{
Building=StarScream Skyscraper,
BuldingId=1999,
AccountId=2001,
Number=008,
Name=StarScream
}]"}下面是我的代码:
function getReadyStateHandler(req)
{
// Return an anonymous function that listens to the
// XMLHttpRequest instance
return function ()
{
// If the request's status is "complete"
if (req.readyState == 4)
{
// Check that a successful server response was received
if (req.status == 200)
{
msgBox("JSON Response recieved...");
var addresses = req.responseText.toJSON();
msgBox(req.responseText.toJSON());
}
else
{
// An HTTP problem has occurred
alert("HTTP error: " + req.status);
}
}
}
}我已经尝试了addresses.Address[0].City、addressess.Addresses[0].City和许多其他的工具--但这有点让人困惑!
发布于 2011-05-27 22:06:35
除了您的响应中没有City键之外,您返回的对象只包含一个(格式错误的)字符串,而不是一个对象数组。您可以使用http://jsonlint.com检查这一点
您是如何创建响应的?它应该看起来更像:
{ "Addresses" : [{
"Building":"Megatron Skyscraper",
"BuldingId":1998,
"AccountId":2000,
"Number":7,
"Name":"Megatron"
},{
"Building":"StarScream Skyscraper",
"BuldingId":1999,
"AccountId":2001,
"Number":8,
"Name":"StarScream"
}]}更新:那些在"Number":007和"Number":008中的前导零可能会导致问题,因为它们将被解释为八进制值。我已经在我的答案中删除了它们。
发布于 2011-05-27 22:08:32
您的响应有效,但地址是字符串而不是数组。如果要将其视为数组,则不应使用引号。如果你愿意的话,你可以修改一下。
address = JSON.parse(addresses.Addresses);
https://stackoverflow.com/questions/6153295
复制相似问题