【问题标题】:JSON not passing array data to PHPJSON没有将数组数据传递给PHP
【发布时间】:2011-05-03 20:45:06
【问题描述】:

我正在尝试更改我的代码以根据上一个问题的建议使用 json 来简化一些事情......

在客户端:

<script type="text/javascript" src="../js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="../js/jquery.tablednd_0_5.js"></script>
<script type="text/javascript" src="../js/jquery.json-2.2.js"></script>

<script type="text/javascript">
    $(document).ready(function() {
        $('#table').tableDnD();
    });
    function sendData() {
        data = $('#table').tableDnDSerialize();
        alert(data); // shows expected data
        document.dataform.data.value = $.toJson(data);
        document.data.submit();
    }
</script>

<form action="$php_page_name" method="post" name="dataform" onSubmit="sendData()">
    <input type="hidden" name="data" />
    <input type="submit" value="Submit" />
</form>

js 警报输出预期的数组,我认为此时已将其转换为字符串。但是当我提交form.data时,我的php:

$data = json_decode($_POST['data']);
print_r($data);
print_r($_POST);

只返回:

数组([数据] =>)

任何想法为什么什么都没有通过?

干杯, 安迪

【问题讨论】:

    标签: php javascript json post


    【解决方案1】:

    需要等待函数返回:

    onSubmit="return sendData()"
    

    否则表单将立即提交,并且不会等到数据更改。

    在函数内部替换这个

    document.data.submit();
    

    用这个:

    return true;
    

    此外:假设您将其用作 jquery.json-2.2.js :
    http://code.google.com/p/jquery-json/downloads/detail?name=jquery.json-2.2.js&can=2&q=
    方法名称是
    $.toJSON 而不是$.toJson

    【讨论】:

    • 该表单目前仅在未立即单击提交时才提交...但是我已根据您的建议进行了更改,但没有任何区别...
    • 这就是我的意思,如果单击提交按钮,如果没有建议的更改,表单将不会等到函数操作该字段。可能还有其他错误会阻止表单提交假定值,但无论如何我的建议是强制性的。
    • 好的,谢谢,我现在已经改变了。但是在 php 方面仍然没有收到任何东西......
    【解决方案2】:

    尽量不要对元素命名相同。 您的表单被命名为“数据”,您的隐藏输入也是如此。

    【讨论】:

    • 而且不应该 document.data.data.value = $.toJson(data);是 document.data.value = $.toJson(data); ?
    • 我已经改成:document.dataform.data.value = $.toJson(data);
    • 第一个数据(在 document.data.data.value 中)引用了表单名称,所​​以我认为这是正确的......在尝试实现 JSON 内容之前,它都是这样工作的。 ..
    猜你喜欢
    • 2018-02-02
    • 2018-01-18
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2012-01-26
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多