Mysql
 sql >> база данни >  >> RDS >> Mysql

Предаване на масив от PHP към Javascript с помощта на JQuery &JSON

Мисля, че вашият PHP връща грешка, а не JSON, който очаквате. Тъй като имате dataType: 'json' , jQuery се опитва да анализира отговора, но не успява. Когато това се случи, jQuery не извиква success обратно повикване.

Ако можете, използвайте Firebug, за да видите какво се връща от ajax извикването. Друг начин би бил временно да промените на dataType: 'html' и след това променете вашия success обратно повикване до:

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

Надяваме се, че когато видите съобщението, което се връща, това ще помогне за идентифициране на проблема. Едно нещо, което трябва да направите обаче, е да добавите код за справяне със случаите, когато заявката не успее да се изпълни и когато не се извлича ред от базата данни. Можете да добавите следния код към 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);

Има обаче и няколко проблема с извикването на Ajax:

(1) Посочвате contentType: "application/json; charset=utf-8" , но тогава не изпращате JSON. Трябва да направите нещо подобно:

data: JSON.stringify({}),

Но ако направите това, не можете да получите данните на сървъра с помощта на $_POST функция. Следователно, може да искате да се отървете от contentType настройка вместо това. Вижте този ТАК отговор за повече информация.

(2) Когато посочите dataType: 'json' , JQuery ще анализира отговора на обект, преди да извика обратното извикване, така че msg параметърът вече трябва да е обект. Следователно не трябва да извиквате JSON.parse(msg) .

(3) Връщате асоциативен масив от PHP файла. Това ще бъде преобразувано в JavaScript обект, а не в масив.

Мисля, че трябва да опитате следното:

$.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 и индекси с повече от една колона

  2. INSERT в DB DateTime низ

  3. Интегриране на MySQL с Python в Windows

  4. разлика между where_in и find_in_set

  5. Има ли възможност за слушане на sql таблица/поле с камила?