sql >> Database >  >> RDS >> Mysql

Een array doorgeven van PHP naar Javascript met behulp van JQuery &JSON

Ik denk dat je PHP een fout retourneert, in plaats van de JSON die je verwacht. Aangezien u dataType: 'json' . heeft , jQuery probeert het antwoord te ontleden, maar mislukt. Wanneer dat gebeurt, roept jQuery het success niet aan terugbellen.

Gebruik indien mogelijk Firebug om te zien wat wordt geretourneerd door de ajax-oproep. Een andere manier is om tijdelijk over te schakelen naar dataType: 'html' en verander dan je success terugbellen naar:

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

Hopelijk helpt het om het probleem te identificeren wanneer u ziet dat het bericht wordt geretourneerd. Een ding dat u echter moet doen, is code toevoegen om de gevallen af ​​​​te handelen waarin de query niet kan worden uitgevoerd en waarin geen rij uit de database wordt opgehaald. Je zou de volgende code aan het PHP-bestand kunnen toevoegen:

$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);

Er zijn echter ook een paar problemen met de Ajax-oproep:

(1) U specificeert contentType: "application/json; charset=utf-8" , maar dan verzend je geen JSON. Je zou zoiets als dit moeten doen:

data: JSON.stringify({}),

Maar als u dit doet, kunt u de gegevens niet op de server krijgen met de $_POST functie. Daarom wil je misschien af ​​van het contentType in plaats daarvan instellen. Zie dit ZO antwoord voor meer informatie.

(2) Wanneer u dataType: 'json' . opgeeft , zal JQuery het antwoord op een object parseren voordat de succesvolle callback wordt aangeroepen, dus de msg parameter zou al een object moeten zijn. Daarom moet u JSON.parse(msg) . niet aanroepen .

(3) U retourneert een associatieve array uit het PHP-bestand. Dat wordt geconverteerd naar een JavaScript-object, niet naar een array.

Ik denk dat je het volgende moet proberen:

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



  1. Python - MySQL-index automatiseren:parameter doorgeven

  2. SQL LIKE-query mislukt - fatale fout in voorbereide instructie

  3. Een opgeslagen procedure uitvoeren vanuit crontab

  4. MySQL - Hoe elke zoekopdracht volgen?