sql >> Databasteknik >  >> RDS >> Mysql

Skicka en array från PHP till Javascript med JQuery &JSON

Jag tror att din PHP returnerar ett fel, snarare än den JSON du förväntar dig. Eftersom du har dataType: 'json' , jQuery försöker analysera svaret, men misslyckas. När det händer anropar inte jQuery success återuppringning.

Om du kan, använd Firebug för att se vad som returneras av ajax-samtalet. Ett annat sätt skulle vara att tillfälligt ändra till dataType: 'html' och ändra sedan din success återuppringning till:

success: function(msg) { alert(msg); }

Förhoppningsvis hjälper det att identifiera problemet när du ser att meddelandet returneras. En sak du dock bör göra är att lägga till kod för att hantera de fall då frågan inte kan köras och där ingen rad hämtas från databasen. Du kan lägga till följande kod till PHP-filen:

$result = mysql_query($query, $con);

if (!$result) {
    die('Could not run query: ' . mysql_error($con));
}

if (mysql_num_rows($result) < 1) {
    echo 'null';
    exit;
}

$data = mysql_fetch_row($result);

Det finns dock även några problem med Ajax-samtalet:

(1) Du anger contentType: "application/json; charset=utf-8" , men då skickar du inte JSON. Du bör göra något så här:

data: JSON.stringify({}),

Men om du gör detta kan du inte hämta data på servern med $_POST fungera. Därför kanske du vill bli av med contentType inställning istället. Se detta SO-svar för mer information.

(2) När du anger dataType: 'json' , kommer JQuery att tolka svaret på ett objekt innan anropet av framgångsanropet, så msg parametern ska redan vara ett objekt. Därför bör du inte anropa JSON.parse(msg) .

(3) Du returnerar en associativ array från PHP-filen. Det kommer att konverteras till ett JavaScript-objekt, inte en array.

Jag tycker att du ska prova följande:

$.ajax('refreshData.php', {
    type: 'post',
    dataType: 'json',
    data: { },
    cache: false,
    success: function (data) {
        if (data) {
            $('#interface_stats').html('Fatigue: ' + data.fatigue);
        }
    }
});



  1. Exportera en MySQL-databas till SQLite-databas

  2. Kan jag lita på att användningssatsen stänger mina MySQL-anslutningar?

  3. returnera nummer från mitten av en sträng med oregelbundet format

  4. Konvertera sträng till Datetime-objekt i SQL