我从我的服务器返回此响应:
callback({"City": "Miami", "State": "FL", "Street": "9th Street", "Name": "Big 12", "Zip": "65201", "Lat": -48.219999999999999, "Telephone": "5732168906", "Long": 32.0, "Events": "[{\"End Time\": \"2011-01-22 23:36:31\", \"Name\": \"Margaritas\", \"Start Time\": \"2011-01-22 15:36:31\"}, {\"End Time\": \"2011-01-22 19:36:39\", \"Name\": \"Dollar Bottles\", \"Start Time\": \"2011-01-22 15:36:39\"}, {\"End Time\": \"2011-01-23 23:36:31\", \"Name\": \"All You Can Drink\", \"Start Time\": \"2011-01-23 15:36:31\"}]"})
这是我试图解析响应并在我的“今晚列表”中显示它的地方。使用 data.Events ,我可以在屏幕上显示整个字典数组。
function callback(data){
console.log(data);
$("#tonight-list").append("<li role='option' tabindex='0' class='ui-li ui-li-static ui-btn-up-c'>Starts:" +
data.Events +
"<li>");
但是,我无法弄清楚如何访问每个元素(开始时间,结束时间,名称等)。当我尝试 data.Events [0] 时,它只给出了 data.Events 中的第一个字符。
如何访问事件数组中的每个字典键?我只是无法弄清楚语法 - 如果我能看到这个对象类型的所有选项,那就太好了。感谢您的帮助!
答案 0 :(得分:1)
JSON老兄!只需从服务器返回有效的JSON并使用evalJSON。然后,您可以通过相应的键访问每个对象。
编辑:
基本上做,
data.responseText.evalJSON();
答案 1 :(得分:1)
将JSON响应中的Events
设为真实数组而不是字符串,然后您可以像这样使用它:
var obj = JSON.parse(reponseText);
var event = obj.Events[0];
alert(event["End Time"]); // hurray
JSON响应
callback({
"City": "Miami",
"State": "FL",
"Street": "9th Street",
"Name": "Big 12",
"Zip": "65201",
"Lat": -48.219999999999999,
"Telephone": "5732168906",
"Long": 32.0,
"Events": [{
"End Time": "2011-01-22 23:36:31",
"Name": "Margaritas",
"Start Time": "2011-01-22 15:36:31"
},
{
"End Time": "2011-01-22 19:36:39",
"Name": "Dollar Bottles",
"Start Time": "2011-01-22 15:36:39"
},
{
"End Time": "2011-01-23 23:36:31",
"Name": "All You Can Drink",
"Start Time": "2011-01-23 15:36:31"
}]
});