我试图通过以下方式将多维Javascript数组传递到我网站上的另一个页面:
在数组上使用JSON.stringify
将结果值分配给输入字段
将该字段发布到第二页
在发布值上使用json_decode
然后var_dump进行测试
(直接回显发布的变量,看它是否通过 在所有)
第一页的Javascript:
var JSONstr = JSON.stringify(fullInfoArray);
document.getElementById('JSONfullInfoArray').value= JSONstr;
第二页php:
$data = json_decode($_POST["JSONfullInfoArray"]);
var_dump($data);
echo($_POST["JSONfullInfoArray"]);
echo工作正常,但var_dump返回NULL
我做错了什么?
这让我解决了问题:
$postedData = $_POST["JSONfullInfoArray"];
$tempData = str_replace("\\", "",$postedData);
$cleanData = json_decode($tempData);
var_dump($cleanData);
我不知道为什么但是帖子是用一串“\”字符分隔字符串中的每个变量
使用json_last_error()
计算出来的东西被巴特吮吸,返回JSON_ERROR_SYNTAX
答案 0 :(得分:21)
当您使用JSON stringify时,请先在json_decode之前使用html_entity_decode。
$tempData = html_entity_decode($tempData);
$cleanData = json_decode($tempData);
答案 1 :(得分:20)
您需要检查$_POST["JSONfullInfoArray"]
的内容。如果某些内容无法解析json_decode
,则只会返回null
。这不是很有用,因此当返回null
时,您应该检查json_last_error()
以获取有关错误的更多信息。
答案 2 :(得分:9)
在我的案例中没有其他答案有效,很可能是因为JSON数组包含特殊字符。为我修好了什么:
Javascript(已添加encodeURIComponent)
var JSONstr = encodeURIComponent(JSON.stringify(fullInfoArray));
document.getElementById('JSONfullInfoArray').value = JSONstr;
PHP(问题未修改)
$data = json_decode($_POST["JSONfullInfoArray"]);
var_dump($data);
echo($_POST["JSONfullInfoArray"]);
对于包含URL字段和长文本字段的超过2000个用户输入数据集的样本,已验证echo和var_dump都能正常工作,并且在var_dump上为包含URL的子集返回NULL字符?&#
。
答案 3 :(得分:8)
stripslashes(htmlspecialchars(JSON_DATA))
答案 4 :(得分:8)
使用JSON.stringify()保存一些数据然后需要在php中读取。以下代码对我有用。
json_decode( html_entity_decode( stripslashes ($jsonString ) ) );
感谢@Thisguyhastwothumbs
答案 5 :(得分:2)
jsonText = $_REQUEST['myJSON'];
$decodedText = html_entity_decode($jsonText);
$myArray = json_decode($decodedText, true);`
答案 6 :(得分:0)
我不知道这是怎么回事,但是它起作用了。
$post_data = json_decode(json_encode($_POST['request_key']));