web-dev-qa-db-ja.com

AJAX呼び出しから配列を返す方法は?

JQueryでAJAX呼び出しを行うためのより良い解決策を探しています。PHPファイルが配列を返し、クライアント側でJavascript配列として出力されるようにします。これは私がこれをやっていることです:

PHPファイル(Example.php):

<?php
    $id_numbers = array('NES-ZL','NES-AL','SNS-ZL');

    for ($i=0; $i<count($the_array); $i++){
        echo $id_numbers[$i];
        echo '|';
    }
?>

JSファイル:

id_numbers = new Array();
$.ajax({
    url:"Example.php",
    type:"POST",
    success:function(msg){
        id_numbers = msg.split('|');
    }
});

私の現在の方法は、私の好みには少し複雑すぎます。

私がやりたいのは

return $id_numbers;

PHP側で、AJAX呼び出しの後にJavascript配列に直接変換します。

アイデア、誰か?

47
k_sel

JSON を使用して、クライアントとサーバー間でデータ型(配列とオブジェクト)を転送します。

PHPの場合:

JavaScriptの場合:

PHP:

echo json_encode($id_numbers);

JavaScript:

id_numbers = JSON.parse(msg);

Wolfgangが述べたように、jQueryに4番目のパラメーターを与えて、JSONを自動的にデコードできます。

id_numbers = new Array();
$.ajax({
    url:"Example.php",
    type:"POST",
    success:function(msg){
        id_numbers = msg;
    },
    dataType:"json"
});
114
Alex Turpin

PHPの json_encode() をご覧ください。 dataType: "json"パラメーターで$ .ajaxを取得してこれを認識できます。

9

@ Xeon06、ニースですが、このスレッドを読んで私のように試してみた人にとってはちょうどいいです... php => json_encode($theArray)から配列を返すとき。私のようなソフトjsユーザーのためにespを操作するのは簡単ではない文字列に変換します。

Js内では、var jsArray = JSON.parse(data)のようにJSON.parseを使用して配列の値や配列のキーを取得しようとしています。データはphpから配列を返します。 jsonエンコードされた文字列はjsオブジェクトに変換され、簡単に操作できるようになりました。

例えばfoo = {one:1、two:2、three:3}-JSON.parseの後に取得

for (key in foo){ console.log("foo["+ key +"]="+ foo[key]) }-ur firebugコンソールに出力します。出来上がり!

1
swedge218

json_encode(http://php.net/manual/en/function.json-encode.php)をご覧ください。 PHP 5.2以降で利用可能です。パラメータdataType: 'json'を使用して解析します。成功すると、最初の引数としてオブジェクトが得られます。詳細については、jQueryドキュメントを参照してください。 http://api.jquery.com/jQuery.ajax/

0
TimWolla

PHPにはこれのための非常にセクシーな関数があり、配列を渡すだけです:

$json = json_encode($var);

$.ajax({
url:"Example.php",
type:"POST",
dataType : "json",
success:function(msg){
    console.info(msg);
}
});

シンプル:)

0
Jamie Hutber