2016-04-15 10 views
0

Ich versuche, eine JSON-Datei mit verschachtelten Elementen mit jQuery zu lesen und ich kann die erste Ebene aufrufen und zurückgeben, aber wenn ich "Ergebnis" aufrufen, gibt das Ergebnis aber 5 "undefined" mit es auchLesen verschachtelten JSON mit jquery Rückgabe undefined

hier ist meine JSON:

{ 
"count": 380, 
"fixtures": [ 
{ 
    "status": "FINISHED", 
    "homeTeamName": "Manchester United FC", 
    "awayTeamId": 73, 
    "matchday": 1, 
    "homeTeamId": 66, 
    "result": { 
    "goalsAwayTeam": 0, 
    "goalsHomeTeam": 1 
    }, 
    "date": "2015-08-08T11:45:00Z", 
    "soccerseasonId": 398, 
    "awayTeamName": "Tottenham Hotspur FC", 
    "id": 147075 
}, 
{ 
    "status": "FINISHED", 
    "homeTeamName": "Everton FC", 
    "awayTeamId": 346, 
    "matchday": 1, 
    "homeTeamId": 62, 
    "result": { 
    "goalsAwayTeam": 2, 
    "goalsHomeTeam": 2 
    }, 
    "date": "2015-08-08T14:00:00Z", 
    "soccerseasonId": 398, 
    "awayTeamName": "Watford FC", 
    "id": 147073 
} 

hier ist mein HTML und JQuery:

<!DOCTYPE html> 
<html> 
<head> 
    <title> </title> 
    <style> 
th, td { 
border-bottom: 1px solid #ddd; 
} 
tr:nth-child(even){background-color: #f2f2f2} 

</style> 
</head> 
<body> 
     <table id="data"> 
      <tr> 
       <td>status</td> 
       <td>team 2</td> 
       <td>team 1 </td> 
       <td>score team 2</td> 
       <td>score team 1</td> 
      </tr> 


     </table> 

    <script  src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
    <script>/*global $*/ /*global result*/ 
    $.ajax({ 
     url: 'data.json', 
     dataType: 'json', 
     type: 'get', 
     cache: false, 
     success: function(data) { 
      $(data.fixtures).each(function(index, value) { 

       $("#data").append("<tr><td>"+value.status +"</td>"+" <td>"+value.homeTeamName+"</td>"+"<td>"+value.awayTeamName+"</td>"); 
       $.each(value, function(result , v) { 

      $("#data").append("<tr><td>"+v.goalsHomeTeam +"</td>"+"<td>"+v.goalsAwayTeam+"</td></tr>"); 
       }); 
      }); 


      } 


    }); 
    </script> 
</body> 
</html> 

und hier ist die Ausgabe:

FINISHED Manchester United FC Tottenham Hotspur FC 
undefined undefined 
undefined undefined 
undefined undefined 
undefined undefined 
undefined undefined 
1 0 

Ich hoffe ich habe es gut genug erklärt, schätze jede Hilfe.

Antwort

1

JQuery each

sieht aus wie Sie benötigen, um das Array als ersten Parameter

$.each(data.fixtures, function(index, value) { 

      $("#data").append("<tr><td>"+value.status +"</td>"+" <td>"+value.homeTeamName+"</td>"+"<td>"+value.awayTeamName+"</td>"); 

      $("#data").append("<tr><td></td><td>"+value.result.goalsHomeTeam +"</td>"+"<td>"+value.result.goalsAwayTeam+"</td></tr>"); 

     }); 

anstatt es in einer Wahl

+0

noch produzierende gleiche Liste von undefinierten –

+0

zu setzen nicht ist es wahrscheinlich Mehr als ein Ergebnis für eine Fixture? Wenn nicht, dann wird die zweite nicht benötigt und Sie können einfach die Append-Zeile verwenden, aber ersetzen Sie 'v' durch' value.result' –

+0

, das funktioniert, danke –