Answers:
假设您的服务器接收的字符串看起来像这样(如果您使用jQuery,则应该这样serialize()
):
"param1=someVal¶m2=someOtherVal"
...大概是您所需要的:
$params = array();
parse_str($_GET, $params);
$params
然后应该是一个模拟您期望的数组。请注意,这也适用于HTML数组。
有关更多信息,请参见以下内容:http : //www.php.net/manual/zh/function.parse-str.php
希望对您有所帮助。祝好运!
// jQuery Post
var arraydata = $('.selector').serialize();
// jquery.post序列化var-TO-PHP数组格式
parse_str($_POST[arraydata], $searcharray);
print_r($searcharray); // Only for print array
//你得到任何相同的
Array (
[A] => 1
[B] => 2
[C] => 3
[D] => 4
[E] => 5
[F] => 6
[G] => 7
[H] => 8
)
在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>
在PHP页面上:
<?php
if(isset($_POST['data']))
{
parse_str($_POST['data'], $searcharray);
$data = array(
"back_message" => $searcharray['f1']
);
echo json_encode($data);
}
?>
在此php代码上,返回f1
字段。
为什么不使用关联数组,那么您可以轻松使用它
function unserializeForm($str) {
$returndata = array();
$strArray = explode("&", $str);
$i = 0;
foreach ($strArray as $item) {
$array = explode("=", $item);
$returndata[$array[0]] = $array[1];
}
return $returndata;
}
问候
$i = 0;
修改后的Murtaza Hussain答案:
function unserializeForm($str) {
$strArray = explode("&", $str);
foreach($strArray as $item) {
$array = explode("=", $item);
$returndata[] = $array;
}
return $returndata;
}
只需这样做
$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']);
这是对user1256561的答复。感谢您的想法..但是我没有照顾到step3中提到的url解码内容。
因此,如果有人需要,这里是将对序列化表格数据进行解码的php代码。顺便说一句,请自行决定使用此代码。
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);
}
网址发布数据输入将类似于:attribute1 = value1&attribute2 = value2&attribute3 = value3,依此类推
上面代码的输出仍将保留在数组中,您可以对其进行修改以将其分配给所需的任何变量,这取决于您希望如何进一步使用此数据。
Array
(
[0] => attribute1
[1] => value1
[2] => attribute2
[3] => value2
[4] => attribute3
[5] => value3
)
您只需要表单中的值属性名称。范例:
形成
<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>
Java脚本
$(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;
}
?>
用:
$( '#form' ).serializeArray();
PHP获取数组,不需要反序列化;)
我认为您需要将表单名称与其值分开,执行此操作的一种方法是爆炸(&)
以使您能够attribute=value,attribute2=value
。
我的意思是,您将序列化的jQuery字符串转换为PHP中的数组。
这是您应该遵循的步骤,以更加具体。
jQuery
到您使用的PHP
页面(例如ajax.php
)$.ajax
使用post或get进行提交。(&)
从而分隔每个属性。现在您将获得attribute1 = value,attribute2 = value,现在您将获得一个php数组变量。例如$data =
array("attribute1=value","attribute2=value")
foreach
on $data
和explode
the操作,(=)
以便您可以将属性与值分开,并确保将urldecode
其与值分开,以便它将序列化的值转换为所需的值,并将属性及其值插入新的数组变量,存储属性和序列化字符串的值。让我知道是否需要更多说明。
您可以使用此功能:
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);
}
如何使用它
$_POST['serialized_data'] = 'var1=1&var2=2&var3=3';
post_unserialize( 'serialized_data' );