2017-05-04 7 views
0

Also arbeite ich gerade an dieser Website App und ich versuche zu zeigen, wie viele PCs sind verfügbar in meiner Universität mit dem JSON von der Universität Website und AJAX. Ich kann es nicht herausfinden, aber es zeigt alle MACs für den ersten Raum und dann sagt es undefiniert für andere, es ist alles ein Block von Code, so dass ich nicht sehen kann, wo es schief geht, jeder Rat wäre großartig.Ajax erscheint als undefined

JS:

var container = $('div.container'); 
$('input#get').click(function(){ 
    $.ajax({ 
     type: 'GET', 
     url: '(mylink)', 
     dataType: 'jsonp', 
     success: function(data) { 
     $.each(data, function(index, item) { 
     $.each(item, function(key, value) { 
      container.append('<div class="pcsinside">' + value.displayName + '</div>' + 'PCs available:' + '&nbsp' + value.availPCs + '&nbsp' + 'out of' + '&nbsp' + value.numPCs + '<br/>' + 'Macs available:' + '&nbsp' + value.availMacs + '&nbsp' + 'out of' + '&nbsp' + value.numMacs + '<br/>'); 
      }); 

      }); 

     } 
    }); 
}) 

HTML:

<div class="container"> 
 
      <div id="form-area"> 
 
      <input id="get" type="submit" value="Press For PC Availability"> 
 
      </div> 
 
      <div class="pcsinside"> 
 
      </div> 
 
     </div>

Dies ist, wie es aussieht und es tut Update, wenn ein PC Änderungen für den PC und die MACs mit Ausnahme die undefinierten. enter image description here

Es funktioniert für die erste, aber nicht für die anderen MACs, was ist los? Jede Hilfe wäre wirklich dankbar, Jungs.

+0

value.availMacs ist nicht korrekt, überprüfen Sie json Antwort – madalinivascu

+0

überprüfen Sie Daten und Artikel mit console.log zuerst, auch Daten json hier –

Antwort

-2

JSON Zur Anzeige als String Sie JSON.stringify() Funktion verwenden müssen:

container.append('<div>'+ JSON.stringify(value.displayName) +'</div>'); 
+0

Ich habe es ausprobiert und es hat nicht funktioniert, aber ich schätze das Feedback. :) – Crogan

+0

In Erfolgsfunktion: 'var Ergebnisse = JSON.parse (Daten); var lengthOfData = results.length; 'Dann können Sie mit einer einfachen ** for ** -Schleife (sagen wir I als Iterator) iterieren und dann den Wert als' var displayNmae = JSON.stringify (results [i] ["displayNameKey"]); 'Hier erwäge ich Ihre 'Daten' sind ein JSON-Array. –

0

Zuerst in datatype Sie setzen 'JSONP' anstelle von 'json'. Und S Jayesh hat Recht, du musst stringieren, um die Antwort zu sehen. Siehe dieses Beispiel.

$.ajax({ 
    url: "blabla.php", 
    data: data, 
    type: 'POST', 
    contentType: "application/x-www-form-urlencoded", 
    dataType: 'json', 
    error: function(data){ 
     var err = JSON.stringify(data); 
alert(err); 
    }, 
    success: function(data){ 
     var succ = JSON.stringify(data); 
alert(succ); 
    } 
}); 

Mit dieser Struktur werden Sie sehen, was das Problem ist. Benutze Post statt Get, es ist besser.

+0

Ich kann json nicht benutzen, ich brauche jsonp oder es wird durch die CORS Politik blockiert. – Crogan

+0

Ich bin nicht sicher, auf JSONP, können Sie stringifizieren? Probier es aus. Wenn Sie können, verwenden Sie die gleiche Weise, um das Problem zu testen. Ursache für jetzt müssen Sie Ihr Problem anvisieren. Schlimmste Sache, versucht viele Dinge. Entfernen Sie alles bei Erfolg, testen Sie Ihre Antwort mit einer Warnung wie "Erfolg", wenn stringify nicht funktioniert. Fügen Sie den Fehlerteil hinzu und setzen Sie den Alarm "Fehler". Ersetzen Sie den Teil von PHP, wie ich Ihnen gesagt habe, und testen Sie Ihre Antwort, nur das. Auf diese Weise werden Sie sicher sein. Nach einem anderen Test versuchen. Andere Möglichkeit, versuchen Sie mit reinem Json auf einem localhost und nach dem Konvertieren in Jsonp. Wie ich gelesen habe, ist Jsonp im Gegensatz zu Padding ziemlich ähnlich. Viel Glück – Hexxefir