【问题标题】:How to send and receive multi-dimensional array from php to Titanium mobile?如何从php发送和接收多维数组到Titanium mobile?
【发布时间】:2012-05-21 01:53:57
【问题描述】:

我是编程人员的新手,现在正在尝试使用 php 和 mysql 用于 IOS 应用的 Titanium mobile。

问题是,当我从 DB 获取一些数组数据并尝试传递给 Titanium 时,“this.responseText”包含“null”。

这是部分,

    loadReq.onload = function()  
    {  
        var json = this.responseText;
        var response = [];
        response = JSON.parse(json);
        Ti.API.info(response);
    };  

    loadReq.onerror = function(event)
    {
        alert("Network error");
        Ti.API.debug(event);
        Ti.API.info(event);
    };

    loadReq.open("POST","http://localhost/myAppName/post_loading.php");
        var params = {
            userid: win.userid
        };
        loadReq.send(params);

这是我的 php 代码。

    <?php
    $con = mysql_connect('localhost','root','root');
    if (!$con)
    {
        echo "Failed to connect.";
        exit;
    }
    $db = mysql_select_db('myAppName');
    if (!$db)
    {
        echo "Failed at selecting db.";
        exit;
    }

    $userid = $_POST['userid'];

    $sql = "here is sql order which will fetch array data based on $userid";
    $query = mysql_query($sql);
    $response = array();

    if (mysql_num_rows($query) > 0)
    {
        $row = mysql_fetch_array($query);
        $response = $row;
        echo json_encode($response);
    }
    else
    {
        echo "there is no such data"; 
    }
    ?>

php文件从DB获取的数组数据是这样的,

    Array(
        [0] => Array(
                'id' => '1',
                'name' => 'name1',
                'sex' => 'm',
                'age' => '20'
               ),
        [1] => Array(
                'id' => '3',
                'name' => 'name3',
                'sex' => 'f',
                'age' => '25'
               ),
        [2] => Array(
                'id' => '5',
                'name' => 'name5',
                'sex' => 'm',
                'age' => '18'
               )
    )

我测试了一些案例,确保HTTPClient正常工作,sql顺序语法正确,单个数据(不是多维的,只是一个数组、值和单词)能够正确传递。

但是,多维数组目前不可用。 Ti.API.info 只是告诉我响应是“null”

有什么建议吗?

提前致谢。

【问题讨论】:

    标签: php ios multidimensional-array titanium type-conversion


    【解决方案1】:

    我终于明白了。只需要在 php 中添加 foreach 函数,而不是只有一个 echo。

    所以答案是;

        foreach($responses as $response)
        {
                echo $response;
        }
    

    这么简单的错误...花了很长时间:( 希望这个问题可以节省很多其他人的时间。

    【讨论】:

      【解决方案2】:

      请务必在回显 json 之前设置您的内容类型。在回声之前添加:

      header('Content-type: application/json');
      

      这会在 http 请求中设置一个标头,以便钛中的 javascript 引擎知道如何正确处理响应数据

      【讨论】:

      • 抱歉,不确定这是否是解决方案,但添加它并没有什么坏处,它可以解决您的问题
      • 我添加了但仍然响应为空。无论如何,谢谢你的建议:)
      猜你喜欢
      • 2015-11-23
      • 2017-12-14
      • 2023-04-06
      • 2018-09-29
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      相关资源
      最近更新 更多