期待しているJSONではなく、PHPがエラーを返していると思います。 dataType: 'json'
があるので 、jQueryは応答の解析を試みますが、失敗します。その場合、jQueryはsuccess
を呼び出しません。 コールバック。
可能であれば、Firebugを使用して、ajax呼び出しによって何が返されるかを確認してください。もう1つの方法は、一時的にdataType: 'html'
に変更することです。 次に、success
を変更します コールバック:
success: function(msg) { alert(msg); }
うまくいけば、メッセージが返されるのを見るとき、それは問題を特定するのに役立つでしょう。ただし、実行する必要があることの1つは、クエリの実行に失敗し、データベースから行がフェッチされない場合を処理するコードを追加することです。次のコードを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);
}
}
});