Dengan menggunakan $('#form').serialize()
, saya bisa mengirimkan ini ke halaman PHP. Sekarang bagaimana cara saya unserialize di PHP? Itu serial di jQuery.
Dengan menggunakan $('#form').serialize()
, saya bisa mengirimkan ini ke halaman PHP. Sekarang bagaimana cara saya unserialize di PHP? Itu serial di jQuery.
Jawaban:
Anda tidak harus membatalkan pengunaan apa pun dalam PHP dari serialize
metode jquery . Jika Anda membuat serial data, itu harus dikirim ke PHP sebagai parameter kueri jika Anda menggunakan metode GET permintaan ajax atau memposting vars jika Anda menggunakan permintaan ajax POST. Jadi dalam PHP, Anda akan mengakses nilai suka $_POST["varname"]
atau $_GET["varname"]
tergantung pada jenis permintaan.
The serialize
Metode hanya membutuhkan unsur-unsur bentuk dan menempatkan mereka dalam bentuk string."varname=val&var2=val2"
serialize
kembali. Lihat jawaban yang sangat populer di bawah ini.
Asalkan server Anda menerima string yang terlihat seperti ini (yang seharusnya jika Anda menggunakan jQuery serialize()
):
"param1=someVal¶m2=someOtherVal"
... sesuatu seperti ini mungkin yang Anda butuhkan:
$params = array();
parse_str($_GET, $params);
$params
seharusnya array yang dimodelkan seperti yang Anda harapkan. Perhatikan ini berfungsi juga dengan array HTML.
Lihat yang berikut untuk informasi lebih lanjut: http://www.php.net/manual/en/function.parse-str.php
Semoga bermanfaat. Semoga berhasil!
// jQuery Post
var arraydata = $('.selector').serialize();
// jquery.post serialized var - TO - PHP Array format
parse_str($_POST[arraydata], $searcharray);
print_r($searcharray); // Only for print array
// Kamu mendapatkan hal yang sama
Array (
[A] => 1
[B] => 2
[C] => 3
[D] => 4
[E] => 5
[F] => 6
[G] => 7
[H] => 8
)
Di halaman HTML :
<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>
di halaman PHP :
<?php
if(isset($_POST['data']))
{
parse_str($_POST['data'], $searcharray);
$data = array(
"back_message" => $searcharray['f1']
);
echo json_encode($data);
}
?>
pada kode php ini, kembalikan f1
bidang.
Mengapa tidak menggunakan array asosiatif, sehingga Anda dapat menggunakannya dengan mudah
function unserializeForm($str) {
$returndata = array();
$strArray = explode("&", $str);
$i = 0;
foreach ($strArray as $item) {
$array = explode("=", $item);
$returndata[$array[0]] = $array[1];
}
return $returndata;
}
Salam
$i = 0;
Jawaban Murtaza Hussain yang dimodifikasi :
function unserializeForm($str) {
$strArray = explode("&", $str);
foreach($strArray as $item) {
$array = explode("=", $item);
$returndata[] = $array;
}
return $returndata;
}
Cukup lakukan ini
$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']);
Saya tidak tahu versi Jquery yang Anda gunakan, tetapi ini berfungsi untuk saya di jquery 1.3:
$.ajax({
type: 'POST',
url: your url,
data: $('#'+form_id).serialize(),
success: function(data) {
$('#debug').html(data);
}
});
Kemudian Anda dapat mengakses kunci array POST seperti yang biasa Anda lakukan di php. Coba saja dengan aprint_r()
.
Saya pikir Anda membungkus nilai formulir serial di properti objek, yang tidak berguna sejauh yang saya tahu.
Semoga ini membantu!
Ini sebagai balasan untuk user1256561. Terima kasih atas ide Anda .. namun saya belum mengurus url decode hal-hal yang disebutkan dalam langkah3.
jadi di sini adalah kode php yang akan men-decode data formulir berseri, jika orang lain membutuhkannya. Omong-omong, gunakan kode ini atas kebijakan Anda sendiri.
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);
}
Input data postingan url akan seperti: atribut1 = value1 & attribute2 = value2 & attribute3 = value3 dan seterusnya
Output dari kode di atas masih akan berada dalam array dan Anda dapat memodifikasinya untuk membuatnya ditugaskan ke variabel apa pun yang Anda inginkan dan itu tergantung pada bagaimana Anda ingin menggunakan data ini lebih lanjut.
Array
(
[0] => attribute1
[1] => value1
[2] => attribute2
[3] => value2
[4] => attribute3
[5] => value3
)
Anda hanya perlu nama atribut nilai dalam bentuk. Contoh:
Bentuk
<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;
}
?>
Menggunakan:
$( '#form' ).serializeArray();
Dapatkan array, jangan perlu unserialize;)
Saya pikir Anda perlu memisahkan nama formulir dari nilainya, salah satu metode untuk melakukan ini adalah dengan meledak (&)
sehingga Anda akan mendapatkanattribute=value,attribute2=value
.
Maksud saya di sini adalah bahwa Anda akan mengubah string jQuery berseri menjadi array di PHP.
Inilah langkah-langkah yang harus Anda ikuti agar lebih spesifik.
jQuery
ke PHP
halaman (misalnya ajax.php
) tempat Anda menggunakan$.ajax
untuk mengirim menggunakan pos atau dapatkan.(&)
sehingga memisahkan setiap atribut. Sekarang Anda akan mendapatkan atribut1 = nilai, atribut2 = nilai, sekarang Anda akan mendapatkan variabel array php. misalnya$data =
array("attribute1=value","attribute2=value")
foreach
pada $data
dan explode
yang (=)
sehingga Anda dapat memisahkan atribut dari nilai, dan pastikan untuk urldecode
nilai sehingga akan mengkonversi nilai serial dengan nilai yang Anda butuhkan, dan masukkan atribut dan nilainya ke variabel array baru, yang menyimpan atribut dan nilai string serial.Beri tahu saya jika Anda membutuhkan lebih banyak klarifikasi.
Anda dapat menggunakan fungsi ini:
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);
}
Bagaimana cara menggunakannya
$_POST['serialized_data'] = 'var1=1&var2=2&var3=3';
post_unserialize( 'serialized_data' );