2012-05-26 61 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。