JQuery $ sayesinde PHP için JavaScript Array Passing. Ajax

6 Cevap php

PHP bir javascript dizisi işlemek istiyorum. Böyle bir şey yapmak mümkün mü?

$.ajax({        
       type: "POST",
       url: "tourFinderFunctions.php",
       data: "activitiesArray="+activities,
       success: function() {
            $("#lengthQuestion").fadeOut('slow');        
       }
    }); 

Etkinlikler gibi tek boyutlu bir dizidir:

var activities = ['Location Zero', 'Location One', 'Location Two'];

Ben bu deneyin zaman komut dosyası .. bana bu başarmak yardımcı olacak herhangi bir fikir veya okuma malzemeleri tamamlamak değil mi?

6 Cevap

   data: { activitiesArray : activities },

işte bu! şimdi PHP erişebilirsiniz:

   <? $myArray = $_REQUEST['activitiesArray']; ?>

Göndermeden önce JSON gibi dizi kodlamak isteyeceksiniz, ya da sadece, diğer ucunda bazı önemsiz alırsınız.

Eğer yolluyoruz tüm dizi olduğundan, sadece yapabilirsiniz:

data: { activities: activities }

sizin için otomatik dizi dönüştürmek hangi.

Ayrıntılar için here bakın.

Bir dize içine bu açmak gerekir. Sen JSON2 kütüphanede stringify yöntemini kullanarak bunu yapabilirsiniz.

http://www.json.org/

http://www.json.org/js.html

Kod aşağıdaki gibi olacaktır:

var myJSONText = JSON.stringify(myObject);

Bu yüzden

['Location Zero', 'Location One', 'Location Two'];

Olacak:

"['Location Zero', 'Location One', 'Location Two']"

Sen sunucuda bu işlemek için nasıl bir PHP gurusu başvurmak gerekecek. Diğer cevaplar burada bir çözüm samimi düşünüyorum.

Veriler, benzer bir şekilde sunucudan iade edilebilir. Yani Eğer bir nesne haline geri açabilirsiniz.

var myObject = JSON.parse(myJSONString);

Ben bu cevap için çok geç olabilir biliyorum, ama bu büyük bir şekilde benim için çalıştı:

  1. var st = JSON.stringify(your_object); ile javascript nesnesi (json) stringify

  2. "String" olarak POST veri geçmek (belki jQuery kullanarak: $.post('foo.php',{data:st},function(data){... });

  3. Sunucu tarafında işleme üzerinde veri Decode: $data = json_decode($_POST['data']);

İşte bu ... özgürce verileri kullanabilirsiniz.

Çok boyutlu diziler ve tek diziler normal dizilerde olarak işlenir. Onları sadece normal bir $foo[4] yapmak erişmek için.

Ilişkilendirilebilir diziler (javsacript nesneler) php nesneler (sınıflar) olarak işlenir. Bunlara erişmek için sadece sınıflar gibi yapın: $foo->bar.

JQuery Serialize işlevini kullanın

http://docs.jquery.com/Ajax/serialize

Serialize is typically used to prepare user input data to be posted to a server. The serialized data is in a standard format that is compatible with almost all server side programming languages and frameworks.

Bu benim için çalıştı:

$.ajax(
          {
          url:"../messaging/delete.php",
                     type:"POST",
                     data:{messages:selected},
                     success:function(data){
                         if(data === "done")
                         {

                         }
                         info($("#notification"), data);
                     },
                     beforeSend:function(){
                         info($("#notification"),"Deleting "+count+" messages");
                     },
                    error:function(jqXHR, textStatus, errorMessage)
                   {
                      error($("#notification"),errorMessage);
                    } 


                    });

Ve PHP için bu:

$messages = $_POST['messages']
foreach($messages as $msg)
{
    echo $msg;
}