Kullanarak $('#form').serialize()
, bunu bir PHP sayfasına gönderebildim. Şimdi nasıl PHP seri haline nasıl? JQuery'de serileştirildi.
Kullanarak $('#form').serialize()
, bunu bir PHP sayfasına gönderebildim. Şimdi nasıl PHP seri haline nasıl? JQuery'de serileştirildi.
Yanıtlar:
PHP'de hiçbir şeyi jquery serialize
yönteminden serileştirmek zorunda kalmamalısınız . Verileri serileştirirseniz, bir GET yöntemi ajax isteği kullanıyorsanız veya POST ajax isteği kullanıyorsanız post vars, sorgu parametreleri olarak PHP'ye gönderilmelidir. Böylece PHP'de, istek türüne bağlı olarak $_POST["varname"]
veya buna $_GET["varname"]
bağlı değerlere erişirsiniz .
serialize
Yöntem sadece form öğeleri alır ve dize biçiminde koyar."varname=val&var2=val2"
serialize
dönen dizeyi ayrıştırmanız gerekir . Aşağıdaki gerçekten popüler cevaba bakınız.
Sunucunuzun şuna benzer bir dize alması koşuluyla (jQuery kullanıyorsanız gerekir serialize()
):
"param1=someVal¶m2=someOtherVal"
... böyle bir şey muhtemelen tek ihtiyacınız olan şey:
$params = array();
parse_str($_GET, $params);
$params
daha sonra nasıl olacağını modellenmiş bir dizi olmalıdır. Bunun HTML dizileriyle de çalıştığını unutmayın.
Daha fazla bilgi için aşağıdakilere bakın: http://www.php.net/manual/en/function.parse-str.php
Umarım bu yardımcı olur. İyi şanslar!
// jQuery Postası
var arraydata = $('.selector').serialize();
// jquery.post serileştirilmiş var - TO - PHP Dizi biçimi
parse_str($_POST[arraydata], $searcharray);
print_r($searcharray); // Only for print array
// Bunlardan herhangi birini elde edersin
Array (
[A] => 1
[B] => 2
[C] => 3
[D] => 4
[E] => 5
[F] => 6
[G] => 7
[H] => 8
)
In HTML sayfası:
<script>
function insert_tag()
{
$.ajax({
url: "aaa.php",
type: "POST",
data: {
ssd: "yes",
data: $("#form_insert").serialize()
},
dataType: "JSON",
success: function (jsonStr) {
$("#result1").html(jsonStr['back_message']);
}
});
}
</script>
<form id="form_insert">
<input type="text" name="f1" value="a"/>
<input type="text" name="f2" value="b"/>
<input type="text" name="f3" value="c"/>
<input type="text" name="f4" value="d"/>
<div onclick="insert_tag();"><b>OK</b></div>
<div id="result1">...</div>
</form>
üzerinde PHP sayfası:
<?php
if(isset($_POST['data']))
{
parse_str($_POST['data'], $searcharray);
$data = array(
"back_message" => $searcharray['f1']
);
echo json_encode($data);
}
?>
Bu php kodunda, dönüş f1
alanı.
Neden ilişkisel dizi kullanmıyorsunuz, böylece onu 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;
}
Saygılarımızla
$i = 0;
Modifiye Murtaza Hussain cevabı:
function unserializeForm($str) {
$strArray = explode("&", $str);
foreach($strArray as $item) {
$array = explode("=", $item);
$returndata[] = $array;
}
return $returndata;
}
Sadece bunu yap
$get = explode('&', $_POST['seri']); // explode with and
foreach ($get as $key => $value) {
$need[substr($value, 0 , strpos($value, '='))] = substr(
$value,
strpos( $value, '=' ) + 1
);
}
// access your query param name=ddd&email=aaaaa&username=wwwww&password=wwww&password=eeee
var_dump($need['name']);
Hangi Jquery sürümünü kullandığınızı bilmiyorum, ama bu benim için jquery 1.3 çalışır:
$.ajax({
type: 'POST',
url: your url,
data: $('#'+form_id).serialize(),
success: function(data) {
$('#debug').html(data);
}
});
Ardından, normalde php'de yaptığınız gibi POST dizi anahtarlarına erişebilirsiniz. Sadece bir ile deneyin print_r()
.
Bence bildiğim kadarıyla işe yaramaz bir nesnenin özellik serileştirilmiş form değeri kaydırma.
Bu yardımcı olur umarım!
Bu user1256561 yanıtlıdır. Fikriniz için teşekkürler .. Ancak ben adım3'te belirtilen url kod çözme şeyler hallettim değil.
işte eğer başka birisinin ihtiyacı varsa, serileştirilmiş form verilerinin kodunu çözecek php kodu. Bu arada, bu kodu kendi takdirinize bağlı olarak kullanın.
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);
}
URL post veri girişi aşağıdaki gibi olacaktır: özellik1 = değer1 ve özellik2 = değer2 ve özellik3 = değer3 vb.
Yukarıdaki kodun çıktısı yine de bir dizide olacaktır ve istediğiniz herhangi bir değişkene atanmasını sağlamak için bu kodu değiştirebilirsiniz ve bu verileri nasıl daha fazla kullanmak istediğinize bağlıdır.
Array
(
[0] => attribute1
[1] => value1
[2] => attribute2
[3] => value2
[4] => attribute3
[5] => value3
)
Formda değer özniteliği adına ihtiyacınız var. Misal :
Form
<form id="login_form">
<input type="text" name="username" id="a"/>
<input type="password" name="password" id="b"/>
<button type="button" onclick="login()">Submit</button>
</form>
JavaScript
$(document).ready(function(){});
function login(){
var obj = $('#login_form').serialize();
$.post('index.php', obj, function(res){
alert(res);
})
}
PHP - index.php
<?php
if(!empty($POST['username']) && !empty($POST['password'])){
$user = $POST['username'];
$pass = $POST['password'];
$res = "Username : ".$user." || Password : ".$pass;
return $res;
}
?>
kullanın:
$( '#form' ).serializeArray();
Php dizi almak, serileştirmek gerekmez;)
Ben onun değerlerinden formu adlarını ayırmak gerektiğini düşünüyorum, bunu yapmanın bir yöntemi patlayabilir etmektir (&)
sen alalım diye attribute=value,attribute2=value
.
Demek istediğim, serileştirilmiş jQuery dizesini PHP'de dizilere dönüştürmeniz.
Daha spesifik olmak için izlemeniz gereken adımlar.
jQuery
olarak posta veya get kullanarak göndermek için kullandığınız bir PHP
sayfaya (ör. ajax.php
) $.ajax
Aktarılır.(&)
böylece her nitelikleri ayıran . Şimdi attribute1 = değer, attribute2 = değer, şimdi bir php dizi değişkeni alacaksınız. Örneğin$data =
array("attribute1=value","attribute2=value")
foreach
üzerinde $data
ve böylece değerinden niteliğini ayırabilirsiniz olduğunu ve mutlaka
ihtiyacınız olduğunu değere tefrika değerleri dönüştürmek ve niteliğini ve yeni bir dizi değişkene değerini, ekleyecektir böylece değerin hangi Serileştirilmiş dizenin özniteliğini ve değerini saklar.explode
(=)
urldecode
Daha fazla açıklamaya ihtiyacınız varsa bana bildirin.
Bu işlevi kullanabilirsiniz:
function post_unserialize( $key ){
$post_data = array();
$post_data = $_POST[ $key ];
unset($_POST[ $key ]);
parse_str($post_data, $post_data);
$_POST = array_merge($_POST, $post_data);
}
Bu nasıl kullanılır
$_POST['serialized_data'] = 'var1=1&var2=2&var3=3';
post_unserialize( 'serialized_data' );