jsonコールバック時にJquery配列が変更されない

クリックイベントがトリガーされるとarr1の値がarr2の値(test.php)に変更されます。ただし、次のコードにエラーがあります。

誰かが私を助けることができますか?ありがとう!

$(function(){
               var arr1 = ["apple","banana","orange"];

               $("input").click(function(){
                   $.ajax({
                          type:"post",
                          url:"test.php",
                          cache:false,
                          success: function(data) {
                                arr1 = data;
                              }
                          });
                });

    });

------- Test.php ------------------------------------- ---

<?php   
    echo $arr2 =array("Saab","Volvo","BMW","Toyota"); 

?>
2
追加された 著者 hakre,

3 答え

あなたは同じ種類のデータを操作しません!あなたはあなたのPHP配列をjson_encodeする必要があります

echo json_encode($arr2);

それをJS関数の配列として取得するために

0
追加された
dataTypeを追加するだけです:jsonがjsonを返すようにするにはJS側で、それは既に成功関数内の配列で操作可能です
追加された 著者 guillaumepotier,
これだけでは機能しません。結局のところ、単なる文字列です。それでもデコードする必要があります。
追加された 著者 middus,

複雑なオブジェクトをjavascriptに転送するには、 JSON を使用する必要があります。 PHPでは、 json_encode を使用して配列をエンコードしますこの:

<?php
    $arr2 = array("Saab","Volvo","BMW","Toyota");
    echo json_encode($arr2);
?>

次に、jsonがjsonで dataType: 'json' を使用して話すように指示する必要があります。

$.ajax({
    type: "post",
    url: "test.php",
    dataType: "json",
    cache: false,
    success: function(data) {
        arr1 = data;
    }
});
0
追加された

あなたはただエコーすることはできません。これはおそらくやりたいことです

$arr2 = array("Saab", "Volvo", "BMW", "Toyota");
echo json_encode($arr2);

その後、JavaScriptの面では、 $。getJSON()

0
追加された
getJSON()は一般的なケースでは機能しません。彼の "test.php"はそうですが、それは単なる例です。ここでは、 GET リクエストではなく POST リクエストを行っているようです。 getJSON()は、 GET リクエストのみを行います。ここで ajax()dataType: 'json' に使用する必要があります。
追加された 著者 Ben Lee,
この場合、POSTは使用しませんが、これは最小限のテストケースに過ぎないと思います。実際のケースがGETの場合、どちらのメソッドも動作します。
追加された 著者 Ben Lee,
これが当てはまるかもしれませんが、この場合は POST を使用するのが理にかなっているかどうかは疑問です。これは単にリソースを要求しているだけです。
追加された 著者 middus,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com