我如何PHP序列化一个jQuery序列化的forms?
使用$('#form').serialize() ,我能够发送到一个PHP页面。 现在我如何在PHP中反序列化它? 它在jQuery中被序列化。 
 你不应该从jquery serialize方法反serialize PHP中的任何东西。 如果您序列化数据,则应将其作为查询参数发送到PHP,如果您使用的是GET方法ajax请求,或者如果您使用POST ajax请求,则发送variables。 所以在PHP中,您可以根据请求types访问像$_POST["varname"]或$_GET["varname"]这样的值。 
  serialize方法只是把表单元素和stringforms。 "varname=val&var2=val2" 
 假设你的服务器正在接收一个类似这样的string(如果你使用jQuery的serialize()它应该是这样的): 
 "param1=someVal¶m2=someOtherVal" 
…这样的事情可能是你所需要的一切:
 $params = array(); parse_str($_GET, $params); 
 然后$params应该是一个数组模型如何你会期望。 注意这也适用于HTML数组。 
有关更多信息,请参阅以下内容: http : //www.php.net/manual/en/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 ) 
 parse_str($_POST['whatever'], $searcharray); 
在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; } 
问候
修改Murtaza侯赛因答案:
 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'] ); 
我不知道你正在使用的是哪个版本的jquery,但是这在jquery 1.3中适用于我:
 $.ajax({ type: 'POST', url: your url, data: $('#'+form_id).serialize(), success: function(data) { $('#debug').html(data); } }); 
 然后你可以像在php中一样使用POST数组键。 试试print_r() 。 
我想你是在一个对象的属性中包装序列化的表单值,据我所知,这是毫无用处的。
希望这可以帮助!