Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przekazywanie tablicy z PHP do JavaScript za pomocą JQuery i JSON

Myślę, że Twój PHP zwraca błąd, a nie JSON, którego oczekujesz. Ponieważ masz dataType: 'json' , jQuery próbuje przeanalizować odpowiedź, ale kończy się niepowodzeniem. Kiedy tak się dzieje, jQuery nie wywołuje success oddzwonienie.

Jeśli możesz, użyj Firebuga, aby zobaczyć, co jest zwracane przez wywołanie ajax. Innym sposobem byłaby chwilowa zmiana na dataType: 'html' a następnie zmień swój success oddzwonienie do:

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

Mamy nadzieję, że gdy zobaczysz zwracaną wiadomość, pomoże to zidentyfikować problem. Jedną z rzeczy, które powinieneś zrobić, to dodać kod, aby obsłużyć przypadki, w których zapytanie nie zostanie wykonane i gdy żaden wiersz nie zostanie pobrany z bazy danych. Możesz dodać następujący kod do pliku PHP:

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

Istnieje jednak kilka problemów z wywołaniem Ajax:

(1) Określasz contentType: "application/json; charset=utf-8" , ale wtedy nie wysyłasz JSON. Powinieneś zrobić coś takiego:

data: JSON.stringify({}),

Ale jeśli to zrobisz, nie możesz pobrać danych na serwer za pomocą $_POST funkcjonować. Dlatego możesz chcieć pozbyć się contentType ustawienie zamiast. Zobacz tę odpowiedź na ten temat aby uzyskać więcej informacji.

(2) Gdy określisz dataType: 'json' , JQuery przeanalizuje odpowiedź do obiektu przed wywołaniem wywołania zwrotnego powodzenia, więc msg parametr powinien już być obiektem. Dlatego nie powinieneś wywoływać JSON.parse(msg) .

(3) Zwracasz tablicę asocjacyjną z pliku PHP. To zostanie przekonwertowane na obiekt JavaScript, a nie tablicę.

Myślę, że powinieneś spróbować następujących czynności:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL:porównanie daty NULL z CURRENT_DATE

  2. BOOLEAN lub TINYINT zamieszanie

  3. obliczenia odległości w zapytaniach mysql

  4. Problem z łączeniem wierszy z duplikatami

  5. SQL LIKE % wewnątrz tablicy