2017-10-29 1 views
0

Ich habe mehrere dieser Artikel gelesen, aber nichts funktionierte für mich so würde wirklich zu schätzen wissen, wenn jemand helfen könnte. Ich versuche, das Feld Full_Name in einem HTML-Element auf meiner Webseite anzuzeigen.PHP Ergebnisse nicht in HTML angezeigt

Die PHP-Datei ist wie folgt:

{"Test_Info": { 
    "Company_Info": { 
     "Company_ID": "2", 
     "Company": "Test Company", 
     "Full_Name": "Test User" 
    }} 

ich den Code unten in den Körper meines HTML Code verwenden:

<body id="startscreenBG"> 

     <div class="hello"> </div> 

</body> 
     <script> 
        $.ajax({ 
        type:'GET', 
        url:'jsondata.php', 
        data:'json', 
        success: function(data){ 
          var newhtml = ''; 
          $.each(data, function(i, item) { 
            newhtml +='<div>'+ item.Full_Name +'</div>'; 
          }); 
          $('.hello').html(newhtml); 
          }}) 
     </script> 
</html> 
+0

Check 'errorlog 'und auch' console.log' – Pedram

+1

JSON-Daten sind nicht PHP, nur zu sagen. Aber im Ernst, ich würde 'console.log (data)' in Ihrem Ajax-Callback machen, um zu sehen, ob JSON JSON ist und nicht ein String usw.Wenn es sich um einen String handelt, müssen Sie vor dem Ausgeben des JSON den 'application/JSON' Content Header' header ('Content-Type: application/json') 'hinzufügen. – ArtisticPhoenix

+1

Nicht sicher, ob es nur ein Schreibfehler in dem PHP-Snippet ist, das Sie in Ihrer Frage gepostet haben, aber es enthält kein gültiges JSON-Objekt. Sie verpassen eine Endung '}'. – agrm

Antwort

1

Es ist nicht die HTML-Ausgabe, die Sie konfrontiert sind, aber die Daten-Loop-Problem. Öffnen Sie die Konsole (F12) und stellen Sie sicher, dass die XHR-Anfrage tatsächlich das zurückgibt, was Sie erwarten. Dann schreibe: Debugger; über der Linie: var newhtml = ''; und überprüfen Sie den Inhalt der Daten Variable.

Dann stellen Sie sicher, Ihre Looping Funktion wie erwartet funktioniert:

$.each(data, function(i, item) { 
    debugger; 
}); 

Sie werden erkennen, dass die „Position“ Variable nicht halten Ihre erwartete Objekt mit dem Attribut „Full_Name“. Wenn Sie auf ein Problem stoßen, besteht die Lösung darin, Ihren Code Schritt für Schritt zu debuggen und sicherzustellen, dass jede Funktion das tut, was zu tun ist, und jede Variable den erwarteten Inhalt hat.

Der Grund, warum Sie in diesem Szenario gelandet sind, ist, weil Sie vage Namen wie: "Daten" verwenden. Ihr Inhalt enthält "unparsedCompanyCollection". Ich würde vorschlagen, sich auch an genaue Variablennamen zu gewöhnen, und es wird Ihnen im Debuggen und mit einem sauberen Code im Allgemeinen auf lange Sicht helfen.

0

Nur eine Vermutung, aber Sie können eine Zeichenfolge von Json-Daten und nicht tatsächlichen JSON-Daten zurückgeben. Normalerweise können Sie den Inhaltsheader einfach hinzufügen, bevor Sie ihn ausgeben, um ihn zu beheben.

In PHP-Datei, die die JSON

header('Content-Type: application/json'); 

vor Ihrer Ausgabe von Daten hinzufügen macht.

In Ihrem success callback Sie können einige Debugging tun

... 
    success: function(data){ 
     console.log(data); // Or even just alert(data); if it's a string then you know. 
     ... 
    } 

Einen anderen Weg, um zu sehen, um es zu beheben ist mit JSON.parse(data)

0

Sie data:'json'-dataType:'json' ändern sollte. Sie versuchen auch, item.Full_Name auszugeben. Dies sollte item.Company_Info.Full_Name sein. Ihre Ajax-Aufruf sollte sein:

$.ajax({ 
    type:'GET', 
    url:'jsondata.php', 
    dataType:'json', 
    success: function(data){ 
     var newhtml = ''; 
     $.each(data, function(i, item) { 
      newhtml +='<div>'+ item.Company_Info.Full_Name +'</div>'; 
     }); 
     $('.hello').html(newhtml); 
    } 
}); 

Und Sie sollten Ihre PHP korrigieren eine gültige JSON-Objekt zu halten (man beachte Sie eine Endung } im Code fehlen in Ihrer Frage gestellt)

{"Test_Info": { 
    "Company_Info": { 
     "Company_ID": "2", 
     "Company": "Test Company", 
     "Full_Name": "Test User" 
    } 
}} 
+0

danke, ich habe es geschafft, den Ajax-Aufruf zu korrigieren und stellte auch sicher, dass das Json-Objekt korrekt ist. Ich habe den Code erneut ausgeführt und keine Fehler erhalten, er gibt nur noch nichts aus. Weißt du, was das Problem sonst noch verursachen könnte? –

+0

Was wird in Ihrer Konsole angezeigt, wenn Sie 'success: function (data) {console.log (data)}'? – agrm

+0

Und haben Sie versucht, 'header ('Content-Type: application/json');' dem PHP als [@ArtisticPhoenix vorgeschlagen] hinzuzufügen (https://stackoverflow.com/a/46999132/2311559)? – agrm

Verwandte Themen