繁体   English   中英

如何在PHP中反序列化jQuery-serialize值

[英]How do I unserialize a jQuery-serialize value in php

我能够在PHP文件中发送jquery序列化值。 但是我不能在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序列化值,但是没有任何结果

如何简化为:

<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);  
?>

在此使用序列化与表单提交相同。

通常,您不必非序列化数据。

如果将数据作为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);

好吧,您正在将JSON对象发送到您的PHP脚本,因此您应该使用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']是否存储了值。

您不需要反序列化任何东西。 函数名称有点误导。 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 ,可以使用。

抱歉,我的答案正确地重新发布了我的答案100%工作 jQuery =>

var data = $('form').serialize();
            $.post(baseUrl+'/ajax.php',
                    {action:'saveData',data:data},
                    function( data ) {
                        alert(data);
                    });

的PHP =>

parse_str($_POST['data'], $searcharray);
    echo ('<PRE>');print_r($searcharray);echo ('</PRE>');

输出=>

[query] => 
[search_type] => 0
[motive_note] => 
[id_state] => 1
[sel_status] => Array
    (
        [8] => 0
        [7] => 1
    )

并且借助Aridane https://stackoverflow.com/questions/1792603 ,您可以使用“ $ searcharray”变量数据做任何您想做的事情

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM