Javascript 用jQuery解析JSON
嘿。我正在尝试使用jQuery将一些JSON解析为HTML。我已经检查了我的API请求是否有效,它确实有效 我认为它在附加HTML时被卡住了Javascript 用jQuery解析JSON,javascript,jquery,json,Javascript,Jquery,Json,嘿。我正在尝试使用jQuery将一些JSON解析为HTML。我已经检查了我的API请求是否有效,它确实有效 我认为它在附加HTML时被卡住了 $('button').click(function(){ $.getJSON('http://api.songkick.com/api/3.0/events.json?apikey=MY_API_KEY&location=ip:94.228.36.39', function(data) { $('.json').html(
$('button').click(function(){
$.getJSON('http://api.songkick.com/api/3.0/events.json?apikey=MY_API_KEY&location=ip:94.228.36.39', function(data) {
$('.json').html('<p>' + data.location + '</p>' + '<p>' + data.uri + '</p>');
});
});
问题是响应没有属性
location
或uri
$('button').click(function(){
$.getJSON('http://api.songkick.com/api/3.0/events.json?...', function(data) {
// only guessing based on the information provided
var events = data.resultsPage.results.event;
for (var i = 0, l = events.length; i < l; i++) {
$('.json').append('<p>' + events[i].location.city + '</p>'
+ '<p>' + events[i].uri + '</p>');
});
}
});
$(“按钮”)。单击(函数(){
$.getJSON('http://api.songkick.com/api/3.0/events.json?...,函数(数据){
//仅根据提供的信息进行猜测
var events=data.resultsPage.results.event;
对于(变量i=0,l=events.length;i'
+“”+事件[i].uri+”);
});
}
});
问题在于响应没有属性位置
或uri
$('button').click(function(){
$.getJSON('http://api.songkick.com/api/3.0/events.json?...', function(data) {
// only guessing based on the information provided
var events = data.resultsPage.results.event;
for (var i = 0, l = events.length; i < l; i++) {
$('.json').append('<p>' + events[i].location.city + '</p>'
+ '<p>' + events[i].uri + '</p>');
});
}
});
$(“按钮”)。单击(函数(){
$.getJSON('http://api.songkick.com/api/3.0/events.json?...,函数(数据){
//仅根据提供的信息进行猜测
var events=data.resultsPage.results.event;
对于(变量i=0,l=events.length;i'
+“”+事件[i].uri+”);
});
}
});
正如我所看到的,问题在于,JSON的结构与您尝试评估的结构不同。它的嵌套要深得多。因此,您需要的不是data.location
,而是类似于data.resultsPage.results.event[0]。location
这意味着,很可能您的代码中缺少了
data.resultsPage.results.event
上的循环。正如我所看到的,问题是,JSON的结构与您尝试评估的结构不同。它的嵌套要深得多。因此,您需要的不是data.location
,而是类似于data.resultsPage.results.event[0]。location
这意味着,您很可能只是缺少了代码中
data.resultsPage.results.event
上的循环。您作为示例给出的JSON对象有好几个层次。要到达该位置,您必须在内部筑巢-
var events = data['resultsPage']['results']['event'];
//Actually an array of events
var location = events[0]['location'];
...
您作为示例给出的JSON对象有几个层次。要到达该位置,您必须在内部筑巢-
var events = data['resultsPage']['results']['event'];
//Actually an array of events
var location = events[0]['location'];
...
添加了Ryan的函数,向您展示了它与给定的JSON一起工作,因此缺少了一些其他内容-这是简单的JS版本
<div id="eventDiv"></div>
<script>
var data = {
"resultsPage": {
"totalEntries": 99,
"page": 1,
"results": {
"event": [
{"type":"Concert",
"location": {
"city":"Huddersfield, UK","lng":-1.78333,"lat":53.65
},
"popularity":0.0,
"status":"ok",
"uri":"http:\/\/www.songkick.com\/concerts\/4993456-barbirolli-quartet-at-st-pauls-hall?utm_source=2251&utm_medium=partner",
"venue": {
"uri":"http:\/\/www.songkick.com\/venues\/156338-st-pauls-hall?utm_source=2251&utm_medium=partner",
"lng":-1.78333,
"displayName":"St. Paul's Hall",
"id":156338
}
}
]
}
}
}
window.onload=function() {
var events = data.resultsPage.results.event;
for (var i = 0, l = events.length; i < l; i++) {
document.getElementById('eventDiv').innerHTML='<p>' + events[i].location.city + '</p><p>' + events[i].uri + '</p>';
}
}
</script>
变量数据={
“结果页”:{
“totalEntries”:99,
“页码”:1,
“结果”:{
“事件”:[
{“类型”:“音乐会”,
“地点”:{
“城市”:“英国哈德斯菲尔德”,“液化天然气”:-1.78333,“拉脱维亚”:53.65
},
“人气”:0.0,
“状态”:“确定”,
“uri”:“http:\/\/www.songcuick.com\/concerts\/4993456圣保罗大厅巴比罗利四重奏?utm_source=2251&utm_medium=partner”,
“地点”:{
“uri”:“http:\/\/www.songcuick.com\/victions\/156338 st pauls hall?utm_source=2251&utm_medium=partner”,
“液化天然气”:-1.78333,
“显示名称”:“圣保罗大厅”,
“身份证”:156338
}
}
]
}
}
}
window.onload=function(){
var events=data.resultsPage.results.event;
对于(变量i=0,l=events.length;i'+events[i]。uri+'';
}
}
添加了Ryan的函数,向您展示它与给定的JSON一起工作,因此缺少了其他内容-这是简单的JS版本
<div id="eventDiv"></div>
<script>
var data = {
"resultsPage": {
"totalEntries": 99,
"page": 1,
"results": {
"event": [
{"type":"Concert",
"location": {
"city":"Huddersfield, UK","lng":-1.78333,"lat":53.65
},
"popularity":0.0,
"status":"ok",
"uri":"http:\/\/www.songkick.com\/concerts\/4993456-barbirolli-quartet-at-st-pauls-hall?utm_source=2251&utm_medium=partner",
"venue": {
"uri":"http:\/\/www.songkick.com\/venues\/156338-st-pauls-hall?utm_source=2251&utm_medium=partner",
"lng":-1.78333,
"displayName":"St. Paul's Hall",
"id":156338
}
}
]
}
}
}
window.onload=function() {
var events = data.resultsPage.results.event;
for (var i = 0, l = events.length; i < l; i++) {
document.getElementById('eventDiv').innerHTML='<p>' + events[i].location.city + '</p><p>' + events[i].uri + '</p>';
}
}
</script>
变量数据={
“结果页”:{
“totalEntries”:99,
“页码”:1,
“结果”:{
“事件”:[
{“类型”:“音乐会”,
“地点”:{
“城市”:“英国哈德斯菲尔德”,“液化天然气”:-1.78333,“拉脱维亚”:53.65
},
“人气”:0.0,
“状态”:“确定”,
“uri”:“http:\/\/www.songcuick.com\/concerts\/4993456圣保罗大厅巴比罗利四重奏?utm_source=2251&utm_medium=partner”,
“地点”:{
“uri”:“http:\/\/www.songcuick.com\/victions\/156338 st pauls hall?utm_source=2251&utm_medium=partner”,
“液化天然气”:-1.78333,
“显示名称”:“圣保罗大厅”,
“身份证”:156338
}
}
]
}
}
}
window.onload=function(){
var events=data.resultsPage.results.event;
对于(变量i=0,l=events.length;i'+events[i]。uri+'';
}
}
我在这里遇到了同样的问题。问题在于嵌套数据的语法
我改变了:
+ events.location.city +
致:
对于嵌套的每个必填字段。对于“未嵌套”,只需删除括号:
+ events.uri +
我也有同样的问题。问题在于嵌套数据的语法 我改变了:
+ events.location.city +
致:
对于嵌套的每个必填字段。对于“未嵌套”,只需删除括号:
+ events.uri +
你把它扔了吗?另外,你看过Firebug错误控制台和网络选项卡了吗?你把它扔到了吗?另外,您是否查看了Firebug错误控制台和网络选项卡?请参阅我的更新答案以获取显示Ryan的示例应起作用的示例请参阅我的更新答案以获取显示Ryan的示例应起作用的示例