如何从PHP发送和接收多维数组到Titanium mobile?

时间:2012-05-13 02:02:16

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

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

问题是,当我从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只是告诉我响应是“空”

任何建议?

提前感谢。

2 个答案:

答案 0 :(得分:0)

确保在回显json之前设置内容类型。在echo之前添加:

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

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

答案 1 :(得分:0)

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

所以答案是;

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

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