2012-05-26 3 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 с помощью json_encode($row[3]); но он возвращает мне следующий результат.

"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 за ответ, с которым он работал, но можете ли вы рассказать мне, как отправить '$ row [4]' также и как получить к ним доступ из javascript, потому что мне нужны оба столбца. – Mj1992

+0

Это зависит от структуры. Если вы хотите вложенный массив, используйте '$ rows [] = array ($ row [3], $ row [4])'. Однако рассмотрим создание ассоциативного массива со значимыми ключами: '$ rows [] = array ('whatever' => $ row [3], 'whateverelse' => $ row [4])'. Если имена столбцов соответствуют, используйте 'mysql_fetch_assoc' или' mysql_fetch_object' и просто используйте '$ rows [] = $ row;' и вы получите именно то, что хотите. Обратите внимание, что ваш объект JSON будет содержать все столбцы, которые вы извлекли из базы данных. – ThiefMaster

+0

thnx alot для помощи. – Mj1992

1

Создайте новый массив, каждый из которых будет $row[3], отправьте новый массив через json_encode.

Прямо сейчас вы просто json_encoding каждый $row[3] индивидуально.

Смежные вопросы