Titanium Mobile / Javascript Json调用不起作用

时间:2013-01-02 10:05:28

标签: php javascript json titanium

我正在使用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结果为空。

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

1 个答案:

答案 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) ) ;