Jquery dizisi, json geri çağrıldığında değişmez

Click olayı tetiklendiğinde arr1 değerinin arr2 değerine (test.php) değiştirilmesini istiyorum. Ancak, aşağıdaki kodda hata var.

Bana yardım edebilecek kimse var mı? Teşekkürler!

$(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
katma yazar hakre, kaynak

3 cevap

Aynı tür verileri kullanmıyorsunuz! PHP dizininizi json_encode yapmanız gerekir

echo json_encode($arr2);

JS işlevinizde bir dizi olarak almak için

0
katma
Sadece dataType ekleme: "json", json dönüşünü değiştirdiğinizden emin olmak için, JS tarafında ve zaten manipüle edilmeye hazır başarı fonksiyonunun içinde bir dizi var
katma yazar guillaumepotier, kaynak
Bu yalnız işe yaramaz, her şeyden önce sadece bir dizedir. Yine de onu çözmeniz gerekecek.
katma yazar middus, kaynak

Karmaşık nesneleri javascript'e aktarmak için JSON 'u kullanmanız gerekir. PHP olarak, dizinizi json_encode kullanarak kodlayabilirsiniz. bu:

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

Öyleyse jquery'yi dataType: 'json' kullanarak jsonda konuşmasını söylemek zorundasınız.

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

Sadece yankılanamazsın. Muhtemelen yapmak istediğin şey budur

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

Daha sonra, öğelerin Javascript tarafında $. GetJSON() .

0
katma
getJSON() genel durumda burada çalışmaz. Onun "test.php" için olacak, ama bu sadece bir örnektir. Burada GET isteğini değil, GET isteğini yapıyor gibi görünüyor. getJSON() sadece GET istekleri yapar. Burada dataType: 'json' ile ajax() 'ı kullanmalısınız.
katma yazar Ben Lee, kaynak
Bu durumda POST kullanmazsınız, ama bunun sadece minimum bir test durumu olduğunu varsayalım. Eğer gerçek durum bir GET ise, o zaman ya yöntem çalışır.
katma yazar Ben Lee, kaynak
Durum böyle olsa da, bu durum için POST 'un kullanılmasının mantıklı olup olmadığı IMHO'dur, değil mi? Bu sadece bir kaynak istiyor.
katma yazar middus, kaynak