我正在使用JSON与我在远程服务器上运行的PHP脚本进行通信。
该应用程序调用该脚本,并发送一些数据。
我没有JSON的丰富经验,我似乎做错了什么,但我根本找不到它。
试图在google和stackoverflow上找到我的问题,但是问题是我真的不知道问题是什么,因为我没有JSON的经验。
开始:
在循环中,我生成了一个临时列表,该列表正被推送到数组:
var tmpData = {
rowType:row.rowType,
isChecked:row.isChecked,
职位:我
};
resultArr.push(tmpData);
此resultArr
结果:
{
isChecked = 1;
位置= 0;
rowType =电话;
},
{
isChecked = 1;
位置= 1;
rowType =手机;
},
{
isChecked = 1;
位置= 2;
rowType =电子邮件;
},
{
isChecked = 0;
位置= 3;
rowType = sms;
}
上面的内容被发送到远程php脚本:
xhr.send({data:JSON.stringify(resultArr)});
结果在PHP中:
[数据] => [
{\“ rowType \”:\“ type1 \”,\“ isChecked \”:true,\“ position \”:0},
{\“ rowType \”:\“ type2 \”,\“ isChecked \”:true,\“ position \”:1},
{\“ rowType \”:\“ type3 \”,\“ isChecked \”:true,\“ position \”:2},
{\“ rowType \”:\“ type4 \”,\“ isChecked \”:false,\“ position \”:3}]
在PHP脚本中,我需要此数据以将其保存在数据库中。
但是,在json_decode
或$_POST["data"]
上的$_POST
上,结果为空。
所以我的问题是,我在做什么错?
最佳答案
从您的$ _POST ['data']变量中可以看到,引号被转义了(例如\"
)。
您必须在stripslashes
上运行$_POST['data']
才能正确解码。尝试了一下,我的最终代码如下所示:
$json = '[
{\"rowType\":\"type1\",\"isChecked\":true,\"position\":0},
{\"rowType\":\"type2\",\"isChecked\":true,\"position\":1},
{\"rowType\":\"type3\",\"isChecked\":true,\"position\":2},
{\"rowType\":\"type4\",\"isChecked\":false,\"position\":3}]';
$decoded = json_decode( stripslashes($json) ) ;