2017-01-13 2 views
0

Meine Ajax sieht wie folgt aus:Ajax erhalten json Daten von mysqli

$.ajax({ 
     method: "GET", 
     url: 'yooarel.php?', 
     data: servicedata, 
     dataType: "JSON", 
     success: function(data){ 
     $("#count_math").html(data[0].cnt); 
     }  
    }); 
    } 

Innen yooarel.php? Ich habe folgende PHP echo-Code.

$theclass = "SELECT _latin1 'math' as class"; 

$theschool = " 
    SELECT s.class, 
    COUNT(m.class) AS cnt 
    FROM ({$theclass}) s 
    LEFT 
    JOIN members m 
    ON m.class = s.class 
"; 
$theclose = "GROUP BY s.class"; 

$result = $con->query(" 
    {$theschool}{$theclass} 
"); 

$rows = $result->fetch_assoc(); 
echo json_encode($rows); 
mysqli_close($con); 

$con steht für die mysql-Verbindung. Die Abfrage ist aufgeteilt, um Platz für bedingte Ereignisse zu haben. Das Szenario hier ist, dass ich eine Anzahl von Schülern aus verschiedenen Klassen abrufen und deren Anzahl ausgeben möchte.

Derzeit funktioniert der Code, den ich habe, nicht, da es mir sagt, dass cnt nicht definiert ist.

Wenn ich dataType:"JSON" entferne und entferne ([0].cnt), kann ich überprüfen, dass meine Werte im #count_math div als JSON-Liste angezeigt werden.

Ich bin derzeit zur Lösung dieses Problems mit fetch_assoc() anstelle von fetch_all(), weil aus irgendeinem Grund, fetch_all() funktioniert nur in meiner lokalen Umgebung, und nicht meine Hostgator-Server. Ich habe versucht, die PHP-Version zu aktualisieren, und das hat nicht funktioniert.

Lassen Sie mich wissen, wenn es irgendwelche Informationen gibt, die hier hätten sein sollen.

+1

@Radmation Wenn er es nicht zurückgibt, wie wird es zum Kunden kommen? – Barmar

Antwort

1

fetch_assoc() gibt nur eine Zeile zurück. Wenn Sie alle Zeilen möchten, müssen Sie sie in einer Schleife aufrufen.

$rows = array(); 
while ($row = $result->fetch_assoc()) { 
    $rows[] = $row; 
} 
echo json_encode($rows); 

fetch_all() funktioniert nur, wenn Sie die MYSQLND Fahrer, ich vermuten, dass Ihr Hostgator Server dies nicht hat.

Verwandte Themen