2012-05-26 86 views
1

我想從PHP數組的數據庫返回值到JavaScript數組。 到目前爲止,我所做的是將值作爲字符串返回,我希望將每個值作爲數組 索引。

這是我的jQuery AJAX調用:

$.ajax({ 
      type: 'GET', 
      url: "Profile_Control.php", 
      data:"ajaxRequest=yes&id="+document.getElementById("compid").value, 
      success:function(data) 
      {  
       document.getElementById("asd").innerHTML=data; 
      } 
     }); 

,這是我的PHP腳本,到目前爲止,這是返回像字符串值,我想在數組索引的每個值。

$branches=Profile_Model::getCompanyBranches($_GET['id']); 

    while($row=mysql_fetch_array($branches)) 
    { 
     echo $row[3]; 
    } 

現在我只是呼應列從數據庫返回的值3,輸出是這樣的:

 67.030867.020467.031167.020667.0357 

,結果我想應該是這樣的。

arr[0]=67.0308 
    arr[1]=67.0204 
    arr[2]=67.0311 
    arr[3]=67.0206 
    arr[4]=67.0357 

我也嘗試用json_encode($row[3]);在JSON數據進行編碼,但它返回我下面的結果。

"67.0308""67.0204""67.0311""67.0206""67.0357" 
+1

而不是將一個字符串傳遞給'data',你應該使用一個對象:'data:{ajaxRequest:'yes',id:blah}'。否則*你*必須注意正確編碼的值。 – ThiefMaster

回答

2

請在您JS數組,你最終想要的元素,然後一個數組json_encode該數組:

$rows = array(); 
while($row=mysql_fetch_array($branches)) { 
    $rows[] = $row[3]; 
} 
echo json_encode($rows); 

然而,data會在你的成功回調數組,所以你不能簡單地將其指定到元素的innerHTML屬性。但是,因爲這似乎是調試輸出,只需用console.log(data);替換即可。

+0

thnx爲它的工作回覆,但你可以告訴我如何發送'$行[4]'也如何從JavaScript訪問它們,因爲我想這兩列。 – Mj1992

+0

這取決於結構。如果你想要一個嵌套數組,使用'$ rows [] = array($ row [3],$ row [4])''。但是,考慮使用有意義的鍵創建一個關聯數組:'$ rows [] = array('whatever'=> $ row [3],'whateverel'=> $ row [4])''。如果你的列名適合,使用'mysql_fetch_assoc'或'mysql_fetch_object'並簡單地使用'$ rows [] = $ row;'你就會得到你想要的。請注意,您的JSON對象將包含您從數據庫中提取的所有列。 – ThiefMaster

+0

thnx很多的幫助。 – Mj1992

1

創建一個新陣列,每個元素爲$row[3],通過json_encode發送新陣列。

現在你只是單獨對每個$row[3]進行json_encoding。