2017-01-29 4 views
-1

Ich habe JSON-Daten als info.json.Fehler beim Abrufen von Daten aus dem JSON-Objekt

[ 


    {"employee": {"name":"A", "salary": "324423"}}, 

     {"employee": {"name":"B", "salary": "43111"}}, 

     {"employee": {"name":"C", "salary": "43434"}}, 

     {"employee": {"name":"D", "salary": "120000"}}, 



] 

und index.html als Link linklinklink

</body> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script> 
var item,$emp=$('#emp') ;$aa=$('a') ;$sal=$('#salary'); 
    $.ajax({ 
    url:"info.json", 
    success:function(data){ 
    item=data; 
    } 
      }) 

    $aa.click(function(){ 
     var index=$aa.index(this); 
     var 
     inf=item[index].employee; 
      $sal.text(inf.salary); 
     return false; 
    }) 

    </script>  

Ich will nur Namen und das Gehalt des Mitarbeiters auf der Klicktaste in index.html von JSON-Daten anzuzeigen:

  1. alle gleichzeitig in 1 Verbindung
  2. alle von 4 separat in 4 Links

Aber immer Fehler wie:

enter image description here.

Ich denke, es ist einfach, aber ich bin neu in AJAX. Vielen Dank im Voraus

+0

Ich empfehle das Netzwerk Entwickler zu überprüfen Tools Ihres Browsers, um festzustellen, ob tatsächlich eine Antwort vom Server vorliegt oder ob ein Fehler aufgetreten ist. – mm759

+1

Warum aktivieren Sie klicken, wenn Sie nicht sicher sind, ob Sie bereits Ergebnisse erhalten haben? –

+0

Sie müssen Ihre Json mit JSON.parse() analysieren. –

Antwort

0
  1. Zuerst müssen Sie sicherstellen, dass der Handler, der nach den Daten kam vom Server
    1. Sekunde Sie müssen die (,) nach dem letzten JSON-Mitarbeiter entfernen.

dies der JSON ist: -

[ 
{"employee": {"name":"A", "salary": "324423"}}, 

    {"employee": {"name":"B", "salary": "43111"}}, 

    {"employee": {"name":"C", "salary": "43434"}}, 

    {"employee": {"name":"D", "salary": "120000"}} 
] 

Dies ist der Code: -

var item, $emp = $('#emp'); 
$aa = $('a'); 
$sal = $('#salary'); 
$.ajax({ 
url: "info.json", 
success: function(data) { 
    //item = data; 
    //handle click only after the data came back 
    handleClick(data); 
}, 
error:function(xhr,status,error){ 
    console.log(error); 
} 
}) 
var handleClick = function(item){ 
$aa.click(function() { 
var index = $aa.index(this); 
debugger; 
if (item) { 
    var 
    inf = item[index].employee; 
    $sal.text(inf.salary); 
    $emp.text(inf.name); 
} 
return false; 
    }) 
} 

ist hier ein voll Demo

+0

Hoffe, dass lösen Ihre Frage beantworten –

+0

yess aber jedes Mal, wenn Debugger angezeigt wird, drücken Sie F8.Ich verwende chrome –

+0

ich entfernte den Debugger, Hinzugefügt den Namen Handhabung Überprüfen Sie die Demo –

1

Ihre JSON in der letzten Zeile ein zusätzliches Komma, entfernen Sie es

Ihr Code die JSON-Daten erhalten, aber das Parsen es nicht, benutzen Sie diese

$.ajax({ 
    url: "info.json", 
    success: function(data) { 
     item = JSON.parse(data); 
    } 
}) 

jetzt, Sie haben Daten in Artikel

Zugriff auf Ihre Daten:

Anzahl der Mitarbeiter item.length ist

1. Name des Mitarbeiters wird item[0].employee.name

1. Mitarbeiter Gehalt ist item[0].employee.salary

2. Mitarbeiter Name ist item[1].employee.name

2. Mitarbeiter Gehalt item[1].employee.salary

ist und so weiter ...

+0

Was bedeutet "JSON.parse (Daten)" und kann ich nicht einfach "Daten" verwenden –

+0

Ajax wird Daten als zurückgeben eine Zeichenfolge, JSON.parse() wird die Daten in ein JSON-Objekt konvertieren –

Verwandte Themen