2012-02-23 10 views
0

데이터를 가져 오는 데 다음 코드를 사용하고 있는데 아무 반응이 없습니다. 여기 내 PHP 코드가 있습니다.Titanium Appcelerator - 원격 데이터를 가져 오는 방법

$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 코드는 앱을 실행합니다.

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

앱을 실행하면 빈 테이블이됩니다. 어떤 도움이라도 대단히 감사하겠습니다. 이 것 자바 스크립트 쪽 있도록

+0

json 배열 길이 또는 샘플 json 문자열을 확인하십시오 – Triode

답변

0

당신은 다른 배열의 배열을 내장하고 있습니다 :

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

시도해 보았습니다 ... 변경되지 않았습니다. –

0

당신은 it.send를 보내기 전에 sendit.onload해야합니다.

sendit.onerror 메소드와 중간 Ti.API.debug (stuff)를 구현하는 것이 좋습니다. json의 선언은 작동하지만 큰 것은 아닙니다.

+0

주문을 변경했는데 작동하지 않았습니다. 또한 스크립트에 onerror 메소드가있어 오류가 발생하지 않습니다. –

+0

wireshark와 같은 스니퍼가 있으십니까? 디버그 모드로 들어갈 수 있습니까? –

+0

시도 : 'dataArray.push (Ti.UI.createTableViewRow ({title : ''+ json [pos] .pagename + ''})), ' –

1

sendit.send(); 아래로 이동하려고 시도 했습니까 sendit.open?

onload 이벤트에 로그인하여 전혀 실행되지 않도록하십시오.

docs에는 open을 호출하여 등록되기 전에 onload를 정의해야한다고 나와 있습니다.

관련 문제