我有一个简单的php文件,它可以解码我的json字符串,并与ajax一起传递并标记结果,但是我不能保留$_POST变量,为什么?
$_POST
我尝试使用fireBug进行检查,我可以看到POST请求已正确发送,当调用 php 脚本时,他对我做出了Noooooooob的响应,似乎已设置了任何POST变量。
我想要的就是拥有我的数组=)
JSON字符串由生成JSON.stringify:
JSON.stringify
[ { "id":21, "children":[ { "id":196 }, { "id":195 }, { "id":49 }, { "id":194 } ] }, { "id":29, "children":[ { "id":184 }, { "id":152 } ] }, ... ]
的JavaScript
$('#save').click(function() { var tmp = JSON.stringify($('.dd').nestable('serialize')); // tmp value: [{"id":21,"children":[{"id":196},{"id":195},{"id":49},{"id":194}]},{"id":29,"children":[{"id":184},{"id":152}]},...] $.ajax({ type: 'POST', url: 'save_categories.php', dataType: 'json', data: {'categories': tmp}, success: function(msg) { alert(msg); } }); });
save_categories.php
<?php if(isset($_POST['categories'])) { $json = $_POST['categories']; var_dump(json_decode($json, true)); } else { echo "Noooooooob"; } ?>
如果您删除了代码dataType: 'json',则只需对其进行测试即可。
dataType: 'json'
$('#save').click(function() { var tmp = JSON.stringify($('.dd').nestable('serialize')); // tmp value: [{"id":21,"children":[{"id":196},{"id":195},{"id":49},{"id":194}]},{"id":29,"children":[{"id":184},{"id":152}]},...] $.ajax({ type: 'POST', url: 'save_categories.php', data: {'categories': tmp}, success: function(msg) { alert(msg); } }); });