JSON没有将数组数据传递给PHP

时间:2010-11-02 10:15:26

标签: php javascript json post

我正在尝试更改我的代码,以便在上一个问题的推荐中使用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 alert输出预期的数组,我认为此时将其转换为字符串。但是当我提交form.data时,我的php:

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

仅返回:

  

数组([data] =&gt;)

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

干杯, 安迪

2 个答案:

答案 0 :(得分:3)

你需要等待函数的返回:

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

答案 1 :(得分:1)

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