2012-05-13 15 views
1

我是新來的編程人員,現在正在嘗試使用PHP和MySQL的iOS應用程序Titanium mobile。如何發送和接收多維數組從PHP到鈦移動?

問題是,當我從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文件的從數據庫得到的是這樣的,

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只是告訴我的答案是「空」

任何建議?

在此先感謝。

回答

0

請務必在回顯json之前設置您的內容類型。添加回聲之前:

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

這將在HTTP請求頭所以在鈦的JavaScript引擎知道如何正確處理響應數據

+0

對不起,不知道這是解決方案,但它不會傷害到它添加它可以解決你的問題 – Apotropaic

+0

我加了但仍然迴應null。謝謝你的建議無論如何:) – user1258134

0

我終於得到它。只需要在php中添加foreach函數而不是隻有一個回聲。

所以答案是;

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

這樣一個簡單的錯誤......花了足夠長的時間:( 希望這個問題挽救了許多人的時間。