sql >> Database teknologi >  >> RDS >> Mysql

Overførsel af et array fra PHP til Javascript ved hjælp af JQuery &JSON

Jeg tror, ​​at din PHP returnerer en fejl snarere end den JSON, du forventer. Da du har dataType: 'json' , jQuery forsøger at parse svaret, men mislykkes. Når det sker, kalder jQuery ikke success tilbagekald.

Hvis du kan, brug Firebug til at se, hvad der returneres af ajax-opkaldet. En anden måde ville være midlertidigt at ændre til dataType: 'html' og derefter ændre din success tilbagekald til:

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

Forhåbentlig vil det hjælpe med at identificere problemet, når du ser meddelelsen blive returneret. En ting, du dog bør gøre, er at tilføje kode for at håndtere de tilfælde, hvor forespørgslen ikke kan udføres, og hvor ingen række hentes fra databasen. Du kan tilføje følgende kode til 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);

Der er dog også et par problemer med Ajax-opkaldet:

(1) Du angiver contentType: "application/json; charset=utf-8" , men så sender du ikke JSON. Du bør gøre noget som dette:

data: JSON.stringify({}),

Men hvis du gør dette, kan du ikke få data på serveren ved hjælp af $_POST fungere. Derfor vil du måske slippe af med contentType indstilling i stedet for. Se dette SO-svar for mere information.

(2) Når du angiver dataType: 'json' , vil JQuery parse svaret til et objekt, før det kalder tilbagekaldet, så msg parameter skal allerede være et objekt. Derfor bør du ikke kalde JSON.parse(msg) .

(3) Du returnerer et associativt array fra PHP-filen. Det vil blive konverteret til et JavaScript-objekt, ikke et array.

Jeg synes, du skal prøve følgende:

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



  1. Postgres mangler FROM-klausulindtastningsfejl på forespørgsel med WITH-klausul

  2. java.sql.SQLException:Adgang nægtet for brugeren 'root'@'localhost' (ved hjælp af adgangskode:JA)

  3. MySQL Query ser ikke ud til at give forventninger

  4. MySQL gennemsnitligt antal timer mellem oprettede datotider for et bestemt tidsinterval