2017-02-24 3 views
0

Hier ist der JSON String, den ich habe. Ich habe das Öffnen und Schließen von Klammern aus dem JSON entfernt, weil ich die JSON-Werte in jQuery verwenden müssen, um tatsächlich die Daten in einer Auswahlbox zu laden:JSON Throwing Error beim Parsen

{ 
    "text": "Pediatric FA, CPR & AED (2015)", 
    "id": "128177000002431552~Pediatric FA, CPR & AED DVD Set (2015)~YES~117.19" 
}, { 
    "text": "FA, CPR & AED Manual (2015)", 
    "id": "128177000002431564~FA, CPR & AED Manual (2015)~YES~17.73" 
} 

hier ist mein Javascript-Code

$.post("items.cfm",{"term":request.term}) 
       .done(function(data){ 
        try{ 
         var obj = JSON.parse(data), 
         values = []; 
         $.each(data, function(i, obj) { 
          values.push({"label":obj[x].text, "value":obj[x].id, "price":obj[x].id.split('~')[3]}); 
         }) 
         response(values); 
        }catch(e){ 
         alert(e); 
        } 
       }) 
       .fail(function(e){ 
        alert(e); 
       }); 

Jedes Mal, wenn ich es starte, erhalte ich den Fehler

SyntaxError: Unexpected token , in JSON at position

+0

Haben Sie die Browserkonsole überprüft, um den tatsächlichen JSON-Inhalt anzuzeigen, der von der HTTP-Anforderung zurückgegeben wurde? Und sagt es wirklich "... an der Position" ohne weitere Informationen? – Pointy

+0

Sie können nicht mehrere Objekte in einem JSON-String haben, wenn sie nicht in eckigen Klammern als Array gekapselt sind. Fügen Sie an beiden Enden der JSON-Zeichenfolge ein '[' '' '' '' 'hinzu, um es gültig zu machen. – Santi

+0

Ich sagte in meinem POST bin ich Entfernen der Anfang und Ende Klammern, wenn ich sie nicht entfernen dann bekomme ich diesen Fehler: 'TypeError: Kann nicht 'in' Operator nach '4592' in' – Hane

Antwort

3

Sie haben zwei JSON-Objekte, die durch ein Komma getrennt sind. Wenn Sie dies bedeutete ein Array zu sein, müssen Sie es mit Array-Klammern umgeben:

[ 
{ 
    "text": "Pediatric FA, CPR & AED (2015)", 
    "id": "128177000002431552~Pediatric FA, CPR & AED DVD Set (2015)~YES~117.19" 
}, { 
    "text": "FA, CPR & AED Manual (2015)", 
    "id": "128177000002431564~FA, CPR & AED Manual (2015)~YES~17.73" 
} 
] 

Als Seite beachten, wenn Ihr Server ungültige JSON erzeugt, sollten Sie einen guten Blick auf den Code nehmen, dass die Herstellung ist JSON. Es besteht die Möglichkeit, dass Code versucht, diese Zeichenfolge manuell zu generieren, was eine schlechte Übung ist. Der Server sollte eine Bibliothek verwenden, um den zurückgegebenen Wert in JSON zu konvertieren.

+0

Ich sagte in meinem POST Ich entferne die Anfangs- und Endklammern, wenn ich sie nicht entferne, dann erhalte ich diesen Fehler: 'TypeError: Kann 'In' Operator nicht benutzen, um nach '4592' in' – Hane

+0

@Hane zu suchen: Dieser andere Fehler, den du bekommst, ist ein anderes Problem, [mit seiner eigenen Lösung] (http://stackoverflow.com/a/18502129/120955). – StriplingWarrior