Titanium Appcelerator - 如何提取远程数据

时间:2012-02-23 15:00:38

标签: php json titanium

我正在使用以下代码来提取数据,但没有任何反应。这是我的PHP代码。

$getall = "SELECT * FROM pages WHERE account_id=$id ORDER BY course_id";        
$showall = @mysqli_query ($dbc, $getall); // Run the query.

$json = array(); 

if (mysqli_num_rows($showall) > 0)
{   

while ($row=$showall->fetch_assoc()) {      

        $json[]=array(  
     'logged' => true,
         'pagename'=>$row['pagename'],
        ); 

        } // end while


header("Content-Type: text/json"); 
echo json_encode(array( 'pages'  =>   $json ));   


}

这是运行应用程序的JS CODE。

sendit.open('GET', 'http://myurl.com/mypages.php');  
sendit.send();
sendit.onload = function(){  
    var json = JSON.parse(this.responseText);  
    var json = json.pages;  
    var dataArray = [];  
    var pos;    

    for( pos=0; pos < json.length; pos++){  

        dataArray.push({title:'' + json[pos].pagename + ''});  
        // set the array to the tableView  
        tableview.setData(dataArray);  
    };  

};    

var tableview = Ti.UI.createTableView({  
});  

currentWin.add(tableview);

当我运行应用程序时,我得到的只是一张空白表。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

您是否尝试将sendit.send();移至sendit.open下方?

在onload事件中记录日志以确保它被解雇。

它在docs中指出必须在调用open之前定义onload才能进行注册。

答案 1 :(得分:0)

你将数组嵌入到另一个数组中,所以在javascript方面它是:

    dataArray.push({title:'' + json.pages[pos].pagename + ''});  
                                   ^^^^^ - missing level 

答案 2 :(得分:0)

发送it.send之前你应该有sendit.onload。

我还建议你实现sendit.onerror方法,以及中间件Ti.API.debug(stuff); 你也将json的声明加倍,但是工作正常,但不是很好。