1

我正在使用 JSON 与我在远程服务器上运行的 PHP 脚本进行通信。应用程序调用脚本并发送一些数据。

我对 JSON 没有太多经验,而且我似乎做错了什么,我只是找不到它是什么。

尝试在 google 和 stackoverflow 上找到我的问题,但问题是我真的不知道问题是什么,因为我没有上述 JSON 经验。

开始:

在一个循环中,我正在生成一个临时列表,该列表被推送到一个数组中:

    
    var tmpData = {
       行类型:行。行类型,
       isChecked:row.isChecked,
       职位:我
    };

    结果Arr.push(tmpData);

resultArr导致:

{
        isChecked = 1;
        位置 = 0;
        行类型 = 电话;
    },
        {
        isChecked = 1;
        位置 = 1;
        rowType = 手机;
    },
        {
        isChecked = 1;
        位置 = 2;
        行类型 = 电子邮件;
    },
        {
        isChecked = 0;
        位置 = 3;
        行类型 = 短信;
    }

以上内容被发送到远程 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结果为空。

所以我的问题是,我做错了什么?

4

1 回答 1

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) ) ;
于 2013-01-02T10:42:43.670 回答