我能够在php文件中发送jquery serialize值。但我无法在php中反序列化jquery序列化值。现在请告诉我如何在php文件中反序列化jquery序列化值。我的jquery代码是:
<script type="text/javascript">
// index.php
function get(){
$('#age').hide();
$.post('data.php',{ name: $('form').serialize() },
function (output){
$('#age').html(output).fadeIn(1000);
});
}
</script>
data.php文件是:
<?php
echo var_dump(unserialize($_POST['name']));
?>
我使用上面的代码来反序列化jquery序列化值,但我没有得到任何结果
答案 0 :(得分:4)
如何将其简化为:
<script type="text/javascript">
// index.php
function get(){
$('#age').hide();
$.post('data.php',$('form').serialize(),
function (output){
$('#age').html(output).fadeIn(1000);
});
}
</script>
和data.php
<?php
$name=$_POST;
echo var_dump($name);
?>
此处使用序列化与表单提交相同。
答案 1 :(得分:1)
那么,您正在向PHP脚本发送JSON对象,因此您应该使用json_decode()
最终你没有得到任何结果,因为$_POST
数据被解释为一个字符串,被授予一个带有JSON语法的字符串,但仍然只是一个简单的PHP字符串。要获取内容,您必须使用上面链接的json_decode()
功能。默认情况下,它将返回stdClass
个对象,将true
传递给第二个参数以返回关联数组
// return stdClass or null on error
$jsonData = json_decode($_POST['name']);
// return associative array or null on error
$jsonData = json_decode($_POST['name'], true);
在使用之前,您应确保检查$_POST['name']
中是否存储了值。
答案 2 :(得分:1)
您无需反序列化任何内容。该函数的名称有点误导。 jQuery的.serialize()
创建表单的字符串表示,就像它是由常规表单发送一样,例如,在以下表单上调用.serialize()
:
<input name="a" value="foo" />
<input name="b" value="bar" />
将生成此字符串:
a=foo&b=bar
如果您将ajax调用修改为:
$.post('data.php', $('form').serialize(), function (output) {...});
您的表单只会在$_POST
中,随时可以使用。
答案 3 :(得分:1)
通常,您不必对数据进行反序列化。
如果数据作为for参数传递,则以下内容就足够了。
$form_values = $_POST;
print_r($form_values);
但是,有时您可能希望将序列化字符串作为表单的一个字段传递。在这种情况下,您可以使用以下内容:
$form_values = $_POST;
$serialised_form_value = $form_values['some_field_from_form'];
parse_str($serialised_form_value, $field_value);
print_r($field_value);
答案 4 :(得分:0)
抱歉转发了我的回答100% work for my 工作正常 jquery =&gt;
var data = $('form').serialize();
$.post(baseUrl+'/ajax.php',
{action:'saveData',data:data},
function( data ) {
alert(data);
});
php =&gt;
parse_str($_POST['data'], $searcharray);
echo ('<PRE>');print_r($searcharray);echo ('</PRE>');
output =&gt;
[query] =>
[search_type] => 0
[motive_note] =>
[id_state] => 1
[sel_status] => Array
(
[8] => 0
[7] => 1
)
你可以用“$ searcharray”变量数据做你想做的事, 感谢Aridane https://stackoverflow.com/questions/1792603