8

私はAJAXを初めて使用し、PHPがjQueryに返すものに少し混乱しています。したがって、次のようなAJAX関数があります。

 $.ajax({ url: '/my/site',
     data: {action: 'test'},
     type: 'post',
     success: function(output) {
                  alert(output);
              }
 });

(私はこれをajaxの別のStackOverflowページから取得しました。)

しかし、他のさまざまなリソースでは、成功セクションは次のようになります。

 success: function(data) {functionfoocommandshere}

この変数の名前を決定するものについて混乱していますか?PHPが最終的に配列をエコーする場合:

  echo $myVar;

どうすればAJAXからこれを取得できますか?

4

4 に答える 4

15

Ajax-Requestsはサイト全体をフェッチします。したがって、変数ではデータを取得できませんが、データパラメータでサイト全体を取得できます。一緒に作成したすべてのエコーは、このパラメーターに含まれます。配列を取得する場合は、前にjsonに変換する必要があります。

echo json_encode($myArray);

次に、この方法でAjaxを介してそれを受け取ることができます

$.ajax({ url: '/my/site',
 data: {action: 'test'},
 dataType: 'json',
 type: 'post',
 success: function(output) {
              alert(output);
          }
 });
于 2012-11-13T18:13:37.830 に答える
7

PHPファイルで、json_encodeを使用して、配列をJavascriptで使用するためのより便利な形式に変換します。したがって、次のようなものになります。

echo json_encode($myArray);

次に、JavaScriptでdata、メソッドの変数がsuccessJSONを保持します。jQueryのparseJSONを使用して、これをJavaScriptオブジェクトに変換します。これにより、操作が非常に簡単になります。配列に何が含まれているのかわかりませんが、次のようなことを行う可能性があります。

$.ajax({ url: '/my/site',
    data: {action: 'test'},
    type: 'post',
    success: function(data) {
        var obj = jQuery.parseJSON(data);
        alert(obj.name[0] === "John");
      }
});

ここでも、data変数にはPHP出力が含まれますが、JSONはデータをJavaScriptに転送するための一般的で便利な方法です。

于 2012-11-13T18:12:47.277 に答える
3
<script type="text/javascript">
$.ajax({
    url: '/my/site',
    data: {action: 'test'},
    type: 'post',
    success: function(output) {
        alert(output);
    }
 });
</script>

<?php
$action = $_POST['action'];
echo $action;?>

印刷/エコーされた出力はすべて成功関数に返されます。これは、HTMLコンテナにリアルタイムで実行する必要のあるものを入力する場合に便利です。

このコツをつかんだら、別のオプションはJSONを使用して値を持つ変数を返すことです。

于 2012-11-13T18:12:48.490 に答える
-1

successPHP AJAX関数から返されるデータは、ブロックから取得できます。これがマニュアルです

 $.ajax({ url: '/my/site',
 data: {action: 'test'},
 type: 'post',
 dataType: 'json',
 success: function(output) {
     //output is the data returned from PHP AJAX function in JSON format
     alert(output); 
   }
 });
于 2012-11-13T18:10:05.707 に答える