2017-08-23 2 views
0

Il s'agit de la portion javascript en question. J'utilise JSON.parse et quand je l'enregistre dans la console, la clé/valeur de description n'apparaît pas.JSON.parse (request.responseText) ne retournera pas toutes les données

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

mon fichier JSON ressemble à ceci

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

Ceci est le javascript complet

<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> 

C'est ce qui apparaît dans la console

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

Toute réflexion sur pourquoi la section de description est ne pas apparaître?

+0

Votre script fonctionne-t-il? Avez-vous des erreurs, telles que celles de 'JSON.parse'? Ou est-ce juste le 'console.log' qui vous dérange? – Bergi

+0

'JSON.parse' lancerait une erreur sur JSON partiel. Que dit le panneau réseau, le serveur envoie-t-il toutes les valeurs attendues? J'imagine que la console coupe des cordes trop longues. – Bergi

+0

le script ne jette aucune erreur mais JSON.parse ne lit pas complètement dans tout le JSON qui ne me permet pas d'utiliser cette valeur et de la passer dans une fonction de mise à jour. J'ai couru mon JSON via jsonlint.com pour valider et il l'approuve aussi –

Répondre

0

Votre question contient la réponse:

Lorsque vous console.log(request2.responseText) vous dites que vous recevez la sortie suivante:

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

Cette ligne n'a rien à voir avec l'analyse syntaxique JSON. C'est simplement imprimer ce que la réponse contient. Votre serveur n'envoie pas les données de description dans la réponse.