Нужно показывать данные в javascript из БД - PullRequest
0 голосов

Я работаю с кодом php, где я получаю переменные из ввода и использую ajax

Код:

 $.ajax({
  type: "GET",
  url: "controller/appointment/src_agenda.php",
  data: {
    function: "professional",
    variable: professional,
  },
  dataType: "html",
  fail: function( jqXHR, textStatus, errorThrown ) {
    alert(jqXHR);
  },
  error: function (jqxhr, ajaxOptions, thrownError) {
    alert(JSON.stringify(jqxhr));
    alert(jqxhr.status);
    alert(thrownError);
  },
  success: function(data){
    console.log(data);
  }
});

Я получаю массив в функции успеха:

 object(mysqli_result)#3 (5) {
   ["current_field"]=>
   int(0)
   ["field_count"]=>
   int(6)
   ["lengths"]=>
   NULL
   ["num_rows"]=>
   int(76)
   ["type"]=>
   int(0)
 }

Если я использую php foreach, он показывает все строки, но я пробовал javascript data.forEach, и он говорит, что его не существует. Я также пытался (элемент данных var), но он показывает каждый символ как отдельный.

Как я могу показать каждую строку из этого результата запроса в javascript?

Это код модели:

 $sql = "SELECT medical_agenda_id, day, `date`, time_start, time_end, hour_status_id FROM medical_agenda WHERE hour_status_id>='0' AND professional_id='".$id."' ;";
 var_dump($sql);
 $res = $this->db->query($sql);
 return $res;

Мне нужно поместить результат в функцию успеха

1 Ответ

0 голосов
/ 09 мая 2018

return $res; вернет много нежелательных данных. Скорее получите данные набора результатов в ассоциативный массив и echo json_encode() it.

data_type лучше быть JSON вместо html. Потому что это позволит вам получить минимальный объем данных в полезной нагрузке. И вы можете решить, как вы представите их в передней части.

Это должно быть что-то вроде следующего.

while($row = mysqli_fetch_assoc($res)){//Using procedural style here
    $data[] = $row;
}

echo json_encode($data);

Плюс, var_dump($sql) также следует убрать. В противном случае это также будет включено в ответ HTTP, что сделает строку JSON недействительной.

Со всем мусором,

$sql = "SELECT medical_agenda_id, day, `date`, time_start, time_end, hour_status_id FROM medical_agenda WHERE hour_status_id>='0' AND professional_id='".$id."' ;";

//var_dump($sql); Take this out!

$res = $this->db->query($sql);

//return $res; Take this out! You will return the data by echoing it to the Web Server

while($row = mysqli_fetch_assoc($res)){//Using procedural style here
    $data[] = $row;
}

echo json_encode($data); //This is the output tho the client's request.

должен сделать трюк.

Это МИНИМАЛЬНЫЙ , который вы могли бы сделать, чтобы ваш код работал. Перед запуском в эксплуатацию необходимо выполнить множество оптимизаций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...