我正在使用JSON与我在远程服务器上运行的PHP脚本进行通信。 应用程序调用脚本并发送一些数据。
我对JSON没有多少经验,我似乎做错了什么,我找不到它是什么。
尝试在google和stackoverflow上找到我的问题,但问题是我真的不知道问题是什么,因为我没有JSON的上述经验。
这里是:
在循环中,我正在生成一个临时列表,该列表被推送到数组:
var tmpData = { rowType: row.rowType, isChecked: row.isChecked, position: i }; resultArr.push(tmpData);
此resultArr
会导致:
{ isChecked = 1; position = 0; rowType = phone; }, { isChecked = 1; position = 1; rowType = mobilephone; }, { isChecked = 1; position = 2; rowType = email; }, { isChecked = 0; position = 3; rowType = sms; }
以上是发送到远程php脚本:
xhr.send({data : JSON.stringify(resultArr) });
PHP中的结果:
[data] => [ {\"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
结果为空。
所以我的问题是,我做错了什么?
答案 0 :(得分:1)
正如我从$ _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) ) ;