我正在使用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) ) ;

07-24 09:27