我正在尝试更改我的代码,以便在上一个问题的推荐中使用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;)
为什么没有通过任何想法?
干杯, 安迪
答案 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)
尽量不要将元素命名为相同的元素。 您的表单被命名为“数据”,因此您的隐藏输入也是如此。