Del*_*D0D 43 javascript php arrays json stringify
我试图通过以下方式将多维Javascript数组传递到我网站上的另一个页面:
在数组上使用JSON.stringify
将结果值分配给输入字段
将该字段发布到第二页
在发布的值上使用json_decode
然后var_dump来测试
(直接回显发布的变量,看它是否完全通过)
第一页的Javascript:
var JSONstr = JSON.stringify(fullInfoArray);
document.getElementById('JSONfullInfoArray').value= JSONstr;
Run Code Online (Sandbox Code Playgroud)
第二页的PHP:
$data = json_decode($_POST["JSONfullInfoArray"]);
var_dump($data);
echo($_POST["JSONfullInfoArray"]);
Run Code Online (Sandbox Code Playgroud)
echo工作正常,但var_dump返回NULL
我做错了什么?
这让我解决了:
$postedData = $_POST["JSONfullInfoArray"];
$tempData = str_replace("\\", "",$postedData);
$cleanData = json_decode($tempData);
var_dump($cleanData);
Run Code Online (Sandbox Code Playgroud)
我不知道为什么,但帖子是通过一堆"\"字符分隔字符串中的每个变量
使用json_last_error()Bart返回时将其弄清楚JSON_ERROR_SYNTAX
use*_*928 25
当您使用JSON stringify时,请先在json_decode之前使用html_entity_decode.
$tempData = html_entity_decode($tempData);
$cleanData = json_decode($tempData);
Run Code Online (Sandbox Code Playgroud)
Bar*_*art 21
你需要检查一下内容$_POST["JSONfullInfoArray"].如果没有解析的东西json_decode就会返回null.这不是很有帮助所以当null返回时你应该检查json_last_error()以获得有关出错的更多信息.
S. *_*lik 14
当你使用JSON.stringify()保存一些数据然后需要在php中读取它.以下代码对我有用.
json_decode( html_entity_decode( stripslashes ($jsonString ) ) );
Run Code Online (Sandbox Code Playgroud)
感谢@Thisguyhastwothumbs
小智 8
stripslashes(htmlspecialchars(JSON_DATA))
Run Code Online (Sandbox Code Playgroud)
其他答案都不适用于我的情况,很可能是因为JSON数组包含特殊字符.为我修好了什么:
Javascript(添加了encodeURIComponent)
var JSONstr = encodeURIComponent(JSON.stringify(fullInfoArray));
document.getElementById('JSONfullInfoArray').value = JSONstr;
Run Code Online (Sandbox Code Playgroud)
PHP(与问题相同)
$data = json_decode($_POST["JSONfullInfoArray"]);
var_dump($data);
echo($_POST["JSONfullInfoArray"]);
Run Code Online (Sandbox Code Playgroud)
echo和var_dump都已经过验证,可以在包含URL字段和长文本字段的2000多个用户输入数据集的样本上正常工作,并且在var_dump上为包含带字符的URL的子集返回NULL ?&#.
| 归档时间: |
|
| 查看次数: |
101501 次 |
| 最近记录: |