0

jQuery、Ajax、PHPを介してSQLデータベースからデータを取得しようとしています。

これがjQueryコードです

$.ajax({
    url: 'OpenQuiz.php',
    data: '',
    dataType:'json',
    success: function(data) {
        var one = data[0];
    }
}

$(document).ajaxComplete(function(event,request,settings) {
    alert("check");
}

これは、「OpenQuiz.php」と呼ばれるPHPファイルの最後にあるjsonエンコード行です。

echo json_encode($QuizName);
echo json_encode($options);
echo json_encode($votes);
echo json_encode($row_num);
echo json_encode($percentage);
echo json_encode($TruncPercentage);

注意:$ options、$votes、$ Percentage、$TruncPercentageはすべて2次元配列です。$row_numは整数です。$Quiz_Nameは1次元配列です。

「チェック」のアラートボックスが表示されるため、jQueryが正常に実行され、ajaxリクエストが呼び出されることがわかりました。問題は、変数が転送された後、変数にアクセスする方法がわからないことです。data [0]と関係があることは知っていますが、「data[0]」が何を意味するのかまたはそれが何を表すのかはよくわかりません。基本的に、PHPファイルでjson_encodeを使用して送信した変数にアクセスするにはどうすればよいですか?

4

1 に答える 1

1

data [0]は、返される配列の最初のjson_encodedアイテムです。すべてを個別にjson_encodeするのではなく、配列を作成してjson_encodeする必要があります。

$items = array('QuizName'=>$QuizName,'options'=>$options, ... ,'TruncPercentage'=>$TruncPercentage);

echo json_encode($items);

次に、次のコマンドで取得します。

success: function(data) {
    var qn = data.QuizName,
        opt = data.options;
}

各アイテムについても同様に、データを使用します。[whatever]、および[whatever]は、配列で指定したアイテムの名前です。私はもともとインデックス(data [0])で取得すると言っていましたが、コードをより保守しやすくするために明示的に取得することを好みます。

補足としてdatatype:'json'、PHP側でヘッダーを正しく設定するだけで、ajax呼び出しの宣言を削除できます。

header('Content-type: application/json');

これをドキュメントの上部に配置すると、サーバーはページをjsonとして認識します。jQueryに検索させるよりも、はるかに一貫性があり、明示的です。

于 2013-02-21T16:16:27.913 に答える