【问题标题】:Titanium Mobile / Javascript Json call not workingTitanium Mobile / Javascript Json调用不起作用
【发布时间】:2012-12-16 16:53:46
【问题描述】:

我正在使用 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 脚本中,我需要将这些数据保存在数据库中。 但是,在 $_POST["data"]$_POST 上的 json_decode 上,结果为空。

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

【问题讨论】:

    标签: php javascript json titanium


    【解决方案1】:

    正如我从您的 $_POST['data'] 变量中看到的,引号被转义了(例如 \")。

    您必须在 $_POST['data'] 上运行 stripslashes 才能正确解码。试了一下,我的最终代码是这样的:

    $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) ) ;
    

    【讨论】:

    • 谢谢您,先生。我不知道为什么,但我根本没想到,这么简单.. 我一直认为 stripslashes 只处理字符串,但 JSON 字符串是一个字符串.. 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多