Gen*_*ean 153 php jquery serialization
使用$('#form').serialize()
,我能够将其发送到PHP页面.现在我如何在PHP中反序列化它?它是在jQuery中序列化的.
Chr*_*ane 375
前提是您的服务器正在接收一个类似于此的字符串(如果您使用的是jQuery,它应该是这样的serialize()
):
"param1=someVal¶m2=someOtherVal"
Run Code Online (Sandbox Code Playgroud)
...这样的事情可能就是你所需要的:
$params = array();
parse_str($_GET, $params);
Run Code Online (Sandbox Code Playgroud)
$params
然后应该是一个模型,你会期望如何.请注意,这也适用于HTML数组.
有关更多信息,请参阅以下内容:http: //www.php.net/manual/en/function.parse-str.php
希望这很有帮助.祝好运!
Chr*_*rez 66
您不必从jquery serialize
方法中反编译PHP中的任何内容.如果序列化数据,如果使用GET方法ajax请求,则应将其作为查询参数发送给PHP,如果使用POST ajax请求,则应将其发送到vars.所以在PHP中,您可以访问类似于$_POST["varname"]
或$_GET["varname"]
取决于请求类型的值.
该serialize
方法只接受表单元素并将它们以字符串形式放置."varname=val&var2=val2"
小智 47
// jQuery Post
var arraydata = $('.selector').serialize();
Run Code Online (Sandbox Code Playgroud)
// jquery.post序列化var - TO - PHP数组格式
parse_str($_POST[arraydata], $searcharray);
print_r($searcharray); // Only for print array
Run Code Online (Sandbox Code Playgroud)
//你得到了同样的东西
Array (
[A] => 1
[B] => 2
[C] => 3
[D] => 4
[E] => 5
[F] => 6
[G] => 7
[H] => 8
)
Run Code Online (Sandbox Code Playgroud)
在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>
Run Code Online (Sandbox Code Playgroud)
在PHP页面上:
<?php
if(isset($_POST['data']))
{
parse_str($_POST['data'], $searcharray);
$data = array(
"back_message" => $searcharray['f1']
);
echo json_encode($data);
}
?>
Run Code Online (Sandbox Code Playgroud)
在这个PHP代码上,返回f1
字段.
小智 6
只需这样做
$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']);
Run Code Online (Sandbox Code Playgroud)
为什么不使用关联数组,这样你就可以轻松使用它
function unserializeForm($str) {
$returndata = array();
$strArray = explode("&", $str);
$i = 0;
foreach ($strArray as $item) {
$array = explode("=", $item);
$returndata[$array[0]] = $array[1];
}
return $returndata;
}
Run Code Online (Sandbox Code Playgroud)
问候
修改后的穆尔塔扎侯赛因回答:
function unserializeForm($str) {
$strArray = explode("&", $str);
foreach($strArray as $item) {
$array = explode("=", $item);
$returndata[] = $array;
}
return $returndata;
}
Run Code Online (Sandbox Code Playgroud)