2017-08-23 2 views
0

Dies ist der JavaScript-Teil, der in Frage steht. Ich verwende JSON.parse und wenn ich es in der Konsole logge, wird der Beschreibungsschlüssel/-wert nicht angezeigt.JSON.parse (request.responseText) gibt nicht alle Daten zurück

var jsonOptions = JSON.parse(request2.responseText); 
jsonGlobal = jsonOptions; 
console.log(request2.responseText); 

meine JSON-Datei sieht wie folgt aus

[{"level": "1","number": "1","title": "blah blah blah","description": "aaaa"}, 
{"level": "1","number": "1.1","title": "blah again","description": "aaa" }] 

Dies ist die volle Javascript ist

<script> 
var dataList2 = document.getElementById('json-datalist'); 
var input2 = document.getElementById('ajax2'); 
var request2 = new XMLHttpRequest(); 
var jsonGlobal ; 

request2.onreadystatechange = function (response) { 

    if (request2.readyState === 4) { 
     if (request2.status === 200) { 
      // Parse the JSON 
      var jsonOptions = JSON.parse(request2.responseText); 
      jsonGlobal = jsonOptions; 
      console.log(request2.responseText); 
      // console.log(jsonGlobal) 
      // Loop over the JSON array. 
      jsonOptions.forEach(function (item) { 
       // Create a new <option> element. 
       var option = document.createElement('option'); 
       // Set the value using the item in the JSON array. 
       option.value = item.title; 
       option.setAttribute('data-number', item.number); 
       option.setAttribute('data-description',item.description); // add this line for description 
       //<-- 
       // Add the <option> element to the <datalist>. 
       dataList2.appendChild(option); 
      }); 

      // Update the placeholder text. 
      input2.placeholder = "Start Enterting a Title..."; 
     } else { 
      // An error occured :(
      input2.placeholder = "Couldn't load datalist options :("; 
     } 
    } 
}; 


// Update the placeholder text. 
input2.placeholder = "Loading options..."; 

// Set up and make the request2. 
request2.open('GET', '/static/json/all-titles.json', true); 
request2.send(); 
</script> 

Dies ist, was

in der Konsole erscheint
[ 
{ 
    "level": "1", 
    "number": "1", 
    "title": "blah blah blah" 
}, 

Irgendwelche Gedanken auf, warum der Beschreibungsteil ist nicht auftauchen?

+0

Funktioniert Ihr Skript? Erhalten Sie irgendwelche Fehler, zB von 'JSON.parse'? Oder ist es nur die 'console.log', die dich nervt? – Bergi

+0

'JSON.parse' würde einen Fehler bei partiellem JSON auslösen. Was sagt das Netzwerk-Panel, sendet der Server alle erwarteten Werte? Ich könnte mir vorstellen, dass die Konsole zu lange Saiten abschneidet. – Bergi

+0

Das Skript wirft keine Fehler, aber JSON.parse liest nicht alle JSON vollständig ein, was es mir nicht erlaubt, diesen Wert zu verwenden und ihn in eine Update-Funktion zu übergeben. Ich habe mein JSON über jsonlint.com ausgeführt, um es zu validieren, und es genehmigt es auch –

Antwort

0

Ihre Frage enthält die Antwort:

Wenn Sie console.log(request2.responseText) tun Sie sagen, Sie die folgende Ausgabe erhalten:

[ 
{ 
    "level": "1", 
    "number": "1", 
    "title": "blah blah blah" 
}, 

Diese Linie nichts mit JSON Parsen zu tun hat. Es wird einfach gedruckt, was die Antwort enthält. Ihr Server sendet die Beschreibungsdaten nicht in der Antwort.

Verwandte Themen