2017-02-13 5 views
0

Ich habe mein Bestes versucht, um die Lektionen in W3Schools zu verstehen, aber es funktioniert irgendwie nicht!Unbekannter Code Fehler

Ich habe es bearbeitet, damit Sie es viel besser bekommen würden.

Dies ist die Seite index.html:

<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<h2>Get data as JSON from a PHP file on the server.</h2> 
 

 
<p id="demo"></p> 
 

 
<script> 
 
var myObj, i, x, j = ""; 
 
var xmlhttp = new XMLHttpRequest(); 
 

 
xmlhttp.onreadystatechange = function() { 
 
    if (this.readyState == 4 && this.status == 200) { 
 
\t \t myObj = JSON.stringify(this.response); 
 
     myObj1 = JSON.parse(myObj); 
 
\t \t document.getElementById("demo").innerHTML = myObj1.stuid; 
 
\t \t alert(myObj1); 
 
\t \t 
 
    } 
 
}; 
 

 
xmlhttp.open("GET", "sing.php", true); 
 
xmlhttp.send(); 
 

 
</script> 
 

 
</body> 
 
</html>

Und hier ist die sing.php

<?php 
 

 
$servername = "localhost"; 
 
$username = "root"; 
 
$password = ""; 
 
$dbname = "sacapp"; 
 

 
// Create connection 
 
$conn = new mysqli($servername, $username, $password, $dbname); 
 
// Check connection 
 
if ($conn->connect_error) { 
 
    die("Connection failed: " . $conn->connect_error); 
 
} 
 
    
 
$result = $conn->query("SELECT stuid, stuname, stucourse, stustat, stulyear, stulog FROM stuinfo"); 
 
$outp = $result->fetch_all(MYSQLI_ASSOC); 
 

 
echo json_encode($outp); 
 
?>

und hier ist die Wieder sult of myObj1[{"stuid":"10-00002","stuname":"Meratis, Velino","stucourse":"InfoTech","stustat":"0","stulyear":"4","stulog":"feb 16 2017"},{"stuid":"10-00003","stuname":"Melker, Alana","stucourse":"CivilEngi","stustat":"1","stulyear":"5","stulog":"feb 16 2017"}]

aber die document.getElementById("demo").innerHTML = myObj1.stuid; gibt nur eine Undefined Antwort ... was schief gelaufen hier?

Ich weiß nicht, was zur Hölle ist damit falsch. Kann jemand bitte irgendwelche Fehler aufzeigen?

+4

Entfernen Sie das Markup von 'sing.php' – Andreas

+3

Ich bin kein Fan von [w3fools] (http://www.w3fools.com/) selbst – Nope

+0

oh vergessen, aber dann sagt es einfach undefined – Arkonsol

Antwort

-1

AKTUALISIERTE ANTWORT.

Ok, ich überprüfte alles und hatte eine lokale Einrichtung. Sie haben viele Fehler in Ihrem Code.

Werfen wir einen Blick auf index.html.

Es sollte so aussehen. (Ich habe Kommentare, wo Sie Fehler gemacht.)

<!DOCTYPE html> 
<html> 
<body> 

<h2>Get data as JSON from a PHP file on the server.</h2> 

<p id="demo"></p> 

<script> 
var myObj, i, x, j = ""; 
var xmlhttp = new XMLHttpRequest(); 

xmlhttp.onreadystatechange = function() { 
    console.log(this); 
    if (this.readyState == 4 && this.status == 200) { 

     myObj = JSON.parse(this.response); //**IT'S 'response' NOT 'responseText' To look at the object data, you can do console.log(myObj) and see what the object looks like. in the developer window** 

     document.getElementById("demo").innerHTML = myObj.student_id; //**YOU DON'T HAVE A PROPERTY 'id' BUT YOU DO HAVE 'student_id', again look at the json object in the developer window. ** 
    } 
}; 

xmlhttp.open("GET", "sing.php", true); 
xmlhttp.send(); 
</script> 
</body> 
</html> 

Was ‚sing.php‘, da ich die Datenbank nicht haben, ich meine eigenen Arrays erstellt, damit ich sie zusammenführen könnte, da ich denke, das ist was du versuchst zu tun.

<?php 

$outp = array(
    'student_id' => '10-00000', 
    'student_name' => 'Breaker M. North', 
    'student_course' => 'BSIT', 
    'student_stat' => 0, 
    'student_log' => 1 
); 

$outp2 = array(
    "stu_log" => 2, 
    "course_name" => "IT 202", 
    "student_id" => "10-00000" 
); 

echo json_encode(array_merge($outp, $outp2)); 

?> 

Wenn Sie das tun echo json_encode($outp + $outp2); Sie tatsächlich und neue Array erstellen und $outp und $outp2 als separate Werte setzen. Deshalb hattest du das [], du hattest zwei Werte und nicht nur einen. Sie hatten dann undefined, weil Sie nicht auf die Eigenschaft zugreifen konnten, stattdessen greifen wir auf das erste Element des JSON-Arrays zu.

Eine Randnotiz, Sie könnten nur eine SQL-Anfrage erstellen mit JOIN on student_id ... aber das ist nicht Teil der Frage.

+0

Nein, es ist genauso undefiniert wie immer: 3 – Arkonsol

+0

@Arkonsol hat gerade die ganze Antwort aktualisiert. 3 große Fehler gefunden und erklärt, warum es nicht funktioniert hat. –

+0

Ja, aber seit ich will es als ein Objekt Ich schätze die Klammern sind nicht willkommen deshalb ist es undefiniert, aber ich versuche zu löschen, aber ihre immer noch – Arkonsol

0

Entfernen Sie den HTML-Code aus sing.php und geben Sie nur JSON zurück. Obwohl Sie die korrekte Ausgabe in Ihrem Browser sehen, sehen Sie die Tags, wenn Sie die Quelle anzeigen. Dein Skript sieht diese und versagt.

+0

experimentierte ich damit, aber dann sagt es nur undefined ...:/ – Arkonsol

0

Es sieht aus wie die AJAX-Request HTML zurückgibt, können Sie überprüfen, welche durch die Verwendung einer Benachrichtigung zurückgegeben wird, um den Code zu diesem ändern:

if (this.readyState == 4 && this.status == 200) { 
    alert(xmlhttp.responseText); 
} 

Wenn HTML in der Warnung ist, sollten Sie überprüfen, ob die Der Pfad der Seite "sing.php" stimmt in der Zeile:

xmlhttp.open("GET", "sing.php", true); 
+0

es hat das richtige jetzt, dass ich die HTML- und Body-Tags gelöscht habe, aber dann bleibt es immer noch undefiniert ... – Arkonsol

Verwandte Themen