sql >> Databáze >  >> RDS >> Mysql

Předání pole z PHP do Javascriptu pomocí JQuery &JSON

Myslím, že váš PHP vrací chybu, spíše než JSON, který očekáváte. Protože máte dataType: 'json' jQuery se pokusí analyzovat odpověď, ale selže. Když k tomu dojde, jQuery nevolá success zpětné volání.

Pokud můžete, použijte Firebug, abyste viděli, co je vráceno voláním ajax. Dalším způsobem by byla dočasná změna na dataType: 'html' a poté změňte svůj success zpětné volání na:

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

Doufejme, že když uvidíte, že se zpráva vrací, pomůže vám to identifikovat problém. Jedna věc, kterou byste však měli udělat, je přidat kód pro zpracování případů, kdy se dotaz nezdaří a kdy není z databáze načten žádný řádek. Do souboru PHP můžete přidat následující kód:

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

Existuje však také několik problémů s voláním Ajax:

(1) Zadáváte contentType: "application/json; charset=utf-8" , ale pak neposíláte JSON. Měli byste udělat něco takového:

data: JSON.stringify({}),

Ale pokud to uděláte, nemůžete získat data na server pomocí $_POST funkce. Proto se možná budete chtít zbavit contentType místo toho nastavení. Podívejte se na tuto odpověď SO pro více informací.

(2) Když zadáte dataType: 'json' , JQuery analyzuje odpověď na objekt před voláním zpětného volání úspěchu, takže msg parametr by již měl být objekt. Proto byste neměli volat JSON.parse(msg) .

(3) Vracíte asociativní pole ze souboru PHP. To bude převedeno na objekt JavaScriptu, nikoli na pole.

Myslím, že byste měli zkusit následující:

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



  1. SQL Jak aktualizovat SUM sloupce přes skupinu ve stejné tabulce

  2. Kumulativně přidejte chybějící data z předchozího měsíce nebo roku

  3. Jak zobrazit aktuální nastavení příkazu Dot v SQLite

  4. Jak zkrátit tabulku pomocí připraveného příkazu v MySQL?