0

PHP から値の配列を渡し、AJAX を使用してそれを取得する方法を教えてください。私が見つけたのは、PHPから単一の値を渡すことだけです。配列の値を渡そうとすると、AJAX 側でそれを受け取る方法がわかりません

これは私のPHPコードです:

$success[];
$timeout[];
$fail[];

while($row1 = mysql_fetch_array($masterresult))
{
    $success[]=$row1[1];
    $timeout[]=$row1[2];
    $fail[]=$row1[3]; 
}

echo json_encode(array("a"=>$success,"b"=>$timeout,"c"=>$fail));

以下はAJAX呼び出しによるものです:

var channel;
 function overall(){
    $(".one").show();
    $(".two").hide();
    $(".three").hide();
    $(".four").hide();
    window['channel']="overall";
     $.ajax({
             type:"GET",
             url:"dash2.php",
             data:{channel:channel},
             dataType:'json',
             success:function(data){
                    console.log(data.a);
                    console.log(data.b);
                    console.log(data.c);
                    }
            });
    }

これらのphp配列値をこのajax呼び出しに渡すにはどうすればよいですか? 誰かがコードを手伝ってくれませんか

4

5 に答える 5

2

あなたがしたいのは、それを JSON としてエンコードすることです。

$yourArray = array('asdf', 'qwer', 'zxcv');
echo 'var yourJavaScriptArray = ' . json_encode($yourArray) . ';';

これにより、すべての任意のデータを JavaScript でも安全に使用できます。

AJAX のみでこれを行う場合、そのvar部分は必要ありません。json_encode()直接出力するだけです。

于 2013-03-27T16:47:19.260 に答える
2

たとえば、配列内の 1 つの値であるか複数の値であるかにかかわらず、常に次を使用する必要があります。

json_encode($your_php_var)
于 2013-03-27T16:47:31.007 に答える
0
  1. json_encodePHP側の配列。
  2. JavaScript の一部である追加の作業を行わずに、その JSON オブジェクトを JavaScript で使用します。
  3. PHPに送り返すときは、PHPでjson_decodeそれを送信します。

参考:PHPマニュアル

于 2013-03-27T16:48:38.147 に答える
0

そのために、jQuery と組み合わせて JSON を使用できます。

<?php

    $myArray = array('a', 'b');
    echo json_encode($myArray);

?>

アヤックス

$.get('http://localhost/index.php',
    function(data) {
        var response = jQuery.parseJSON(data);
        console.log(response);
    }
);

あなたのコードで:

 var channel;
 function overall(){
    $(".one").show();
    $(".two").hide();
    $(".three").hide();
    $(".four").hide();
    window['channel']="overall";
    $.ajax({
             type:"GET",
             url:"dash2.php",
             data:{channel:channel},
             dataType:'json',
             success:function(data){
                    console.log(data["a"]);
                    console.log(data["b"]);
                    console.log(data["c"]);
            }
    });
 }
于 2013-03-27T16:55:59.897 に答える
0

この例がお役に立てば幸いです。HTMLフォームに入力データがあり、それらをAJAXで送信する必要がある場合を想像してください。サーバー側でそれらを処理し、クライアント側で結果を受け取り、それを処理します。

 <form id="my_form" method="post" action="<?=$ServerSideUrl?>">
   <input type="text" name="field_1" value="">
   <input type="text" name="field_2" value="">
   <input type="text" name="field_3" value="">
 </form>

これがAJAXスクリプトです。この例のJQueryで使用しました

$('#my_form').ajaxSubmit({
        dataType: 'html',
        error: function() {
          alert('some error text');
        },
        complete: function(data) {
          //data this is the result object which returned from server side
          //for example you shpold alert the sum of thouse 3 field
          alert(data.sum);
        }
});

これがサーバー側のコードです

 <? 
   $data = array();
   $data["sum"] = $_POST["field_1"] + $_POST["field_2"] + $_POST["field_3"];
   echo my_json_encode($data);
   return true;
 ?>

したがって、AJAX が完了すると、フォームの 3 つのフィールドの合計が警告されます。

于 2013-03-27T16:57:40.230 に答える