Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用jQuery解析JSON_Javascript_Jquery_Json - Fatal编程技术网

Javascript 用jQuery解析JSON

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(

嘿。我正在尝试使用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('<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的示例应起作用的示例