Nasıl bir jQuery-tefrika formu PHP-unserialize mı?

8 Cevap php

Kullanımı $('#form').serialize(), ben bir PHP sayfası üzerinden bu göndermek başardı. Şimdi nasıl PHP ile unserialize mı? Bu jQuery tefrika edildi.

8 Cevap

Sen jquery serialize yöntemi PHP şey unserialize zorunda olmamalıdır. Eğer verileri seri Eğer bir POST ajax isteği kullanarak eğer bir GET yöntemi ajax isteği veya sonrası değişkenler kullanıyorsanız, bu sorgu parametreleri gibi PHP gönderilmesi gerekmektedir. Yani PHP, sen istek türüne bağlı olarak $ _POST gibi değerleri ["Değişkenadı"] veya $ _GET ["Değişkenadı"] erişmek istiyorum.

Serialize yöntemi sadece form elemanları alır ve dize şeklinde koyar. "Değişkenadı = val & var2'ye = val2"

Sunucu (size () `jQuery serialize kullanıyorsanız gerekiyorsa) şöyle bir dize almak şartıyla:

"param1=someVal&param2=someOtherVal"

... Böyle bir şey muhtemelen ihtiyacınız olan:

$params = array();
parse_str($_GET, $params);

$params sonra beklediğiniz nasıl modellenmiş bir dizi olmalıdır. Bu HTML dizileri ile de çalışır unutmayın.

See the following for more information: http://www.php.net/manual/en/function.parse-str.php

Bu faydalı olur. İyi şanslar!

/ / JQuery Mesaj

var arraydata = $('.selector').serialize();

/ / Jquery.post tefrika var - TO - PHP Array biçimi

parse_str($_POST[arraydata], $searcharray);
print_r($searcharray); // Only for print array

/ / Bunu herhangi aynı olsun

 Array (
 [A] => 1
 [B] => 2
 [C] => 3
 [D] => 4
 [E] => 5
 [F] => 6
 [G] => 7
 [H] => 8
 )

Ben kullandığınız jQuery hangi sürümünü bilmiyorum, ama bu jquery 1.3 benim için çalışıyor:

$.ajax({
    type: 'POST', 
    url: your url,
    data: $('#'+form_id).serialize(), 
    success: function(data) {
        $('#debug').html(data);
  }
});

Then you can access POST array keys as you would normally do in php. Just try with a print_r().

Ben bildiğim kadarıyla işe yaramaz ki, bir nesnenin özelliği tefrika formu değer sarma düşünüyorum.

Bu yardımcı olur umarım!

Bu user1256561 için cevapta olduğunu. Senin fikrin için teşekkürler .. ancak ben step3 belirtilen url decode şeyler halledilir değil.

işte başka herkes ihtiyacı varsa, tefrika form verilerini çözecektir php kodudur. Bu arada, kendi takdirine bağlı olarak bu kodu kullanabilirsiniz.

function xyz($strfromAjaxPOST)
{
    $array = "";
    $returndata = "";
    $strArray = explode("&", $strfromPOST);
    $i = 0;
    foreach ($strArray as $str)
    {
        $array = explode("=", $str);
        $returndata[$i] = $array[0];
        $i = $i + 1;
        $returndata[$i] = $array[1];
        $i = $i + 1;
    }
    print_r($returndata);
}

Özellik1 = değer1 & özellik2 = value2 & attribute3 = değer3 ve böylece
üzerinde: url sonrası veri girişi gibi olacak

Yukarıdaki kod çıkışı hala bir dizi olacak ve bunu istediğiniz herhangi bir değişkene atanmış olsun bunu değiştirebilir ve size daha fazla bu verileri nasıl kullanmak istediğinize bağlıdır.

Array
(
    [0] => attribute1
    [1] => value1
    [2] => attribute2
    [3] => value2
    [4] => attribute3
    [5] => value3
)

Ben onun değerlerinden formu adlarını ayırmak gerektiğini düşünüyorum, bunu yapmak için bir yöntem olsun böylece (&) patlayabilir attribute=value,attribute2=value.

Benim buradaki nokta PHP diziler içine tefrika jQuery dize dönüştürmek olacaktır.

Burada daha spesifik olmak için izlemeniz gereken adımlar olduğunu.

  1. Passed on the serialized jQuery to a PHP page(e.g ajax.php) where you use $.ajax to submit using post or get.
  2. From your php page, explode the (&) thus separating each attributes. Now you will get attribute1=value, attribute2=value, now you will get a php array variable. e.g$data = array("attribute1=value","attribute2=value")
  3. Do a foreach on $data and explode the (=) so that you can separate the attribute from the value, and be sure to urldecode the value so that it will convert serialized values to the value that you need, and insert the attribute and its value to a new array variable, which stores the attribute and the value of the serialized string.

Daha fazla açıklık ihtiyacınız varsa bana bildirin.

Neden ilişkisel dizi kullanımı yok, bu yüzden kolayca kullanabilirsiniz

function unserializeForm($str) {
    $returndata = array();
    $strArray = explode("&", $str);
    $i = 0;
    foreach ($strArray as $item) {
        $array = explode("=", $item);
        $returndata[$array[0]] = $array[1];
    }

    return $returndata;
}

Selamlar

sadece uft8_decode($_POST['message']);