sql >> データベース >  >> RDS >> Mysql

JQueryとJSONを使用してPHPからJavascriptに配列を渡す

    期待している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を削除することをお勧めします 代わりに設定します。このSOの回答 をご覧ください 詳細については。

    (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. Sinh()がPostgreSQLでどのように機能するか

    2. mysqlの削除カスケードでどのように使用しますか?

    3. mimeタイプの画像を取得する

    4. DBCC CHECKDBの影響を最小限に抑える:すべきこととすべきでないこと