我试着去传递一个mulitidimensional Javascript数组到另一个网页在我的网站是:
JavaScript的一个页面上:
var JSONstr = JSON.stringify(fullInfoArray);
document.getElementById('JSONfullInfoArray').value= JSONstr;
PHP的第二页:
$data = json_decode($_POST["JSONfullInfoArray"]);
var_dump($data);
echo($_POST["JSONfullInfoArray"]);
回声工作正常,但后续代码var_dump返回NULL
我做了什么错?
这让我搞掂:
$postedData = $_POST["JSONfullInfoArray"];
$tempData = str_replace("\\", "",$postedData);
$cleanData = json_decode($tempData);
var_dump($cleanData);
林不知道为什么,但职位是未来通过与一帮“\”字符字符串中分离每一个变量
了它使用json_last_error()
作为sugested由Bart其返回JSON_ERROR_SYNTAX
你将需要检查的内容$_POST["JSONfullInfoArray"]
如果有什么不分析json_decode
只返回null
。 这是不是非常有帮助,所以当null
返回你应该检查json_last_error()
来获得更多错误信息。
当您使用JSON字符串化然后json_decode之前先用html_entity_decode。
$tempData = html_entity_decode($tempData);
$cleanData = json_decode($tempData);
其他答案都不对,因为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"]);
这两个回波和的var_dump已被证实在2000多用户输入的数据集,其中包括一个URL字段和长文本场的样本做工精细,而且是对的var_dump返回NULL的一个子集,包含的字符的URL ?&#
。
stripslashes(htmlspecialchars(JSON_DATA))
当你透过JSON.stringify(),然后保存一些数据需要读取,在PHP。 下面的代码为我工作。
json_decode( html_entity_decode( stripslashes ($jsonString ) ) );
由于@Thisguyhastwothumbs
jsonText = $_REQUEST['myJSON'];
$decodedText = html_entity_decode($jsonText);
$myArray = json_decode($decodedText, true);`