Как получить данные из базы данных через ajax-вызов в codeigniter? - PullRequest
0 голосов
/ 02 ноября 2019

Мне нужно получить данные из базы данных в формате Json, и я пишу код, я полагаю, довольно правильно, но я не знаю, почему каждый раз, когда я получаю ответ «Сбой». Я использую codeigniter.

Мой запрос ajax:

$.ajax({
    type:'get',
    url  : 'get_trip_data',
    data: "",
    dataType: 'json', 

    success: function(result){

        console.log('Success');
        console.log(result);
    },
    error: function(result){
      console.log('Failed');
      console.log(result);
    }
 });

Мой контроллер:

    public function get_trip_data()
    {       
        $result = $this->db->get('book_trip')->result_array();
        $trip = array();
        $i = 0;
        foreach($result as $r)
        {           
            $trip[$i]['id'] =  $r['book_id'];
            $trip[$i]['text'] =  $r['book_name'];
            $trip[$i]['start'] =  $r['date_travel'];
            $trip[$i]['end'] =  $r['date_returrn'];
            $i=$i+1;            
        }
        return json_encode($trip);
    }

Даже если я верну только "$ result", этот вызов неработает.

Примечание. При прямом нажатии на маршрут я получаю все данные в формате json. Не могли бы вы подсказать, что не так?

PS: я искал все пути в Google и переполнении стека, но ничего не решило мою проблему.

Ответы [ 4 ]

1 голос
/ 04 ноября 2019

В контроллере

Вместо возврата вы можете 'echo'.

Кроме того, в части успеха и ошибки просмотра вы должны проанализировать результаты.

Следуйте далее.

var res = JSON.parse (результат);console.log (RES);

0 голосов
/ 02 ноября 2019

Если при прямом доступе к маршруту выводится правильный json, это означает, что в вашем запросе ajax указан неверный URL. Попробуйте изменить URL-адрес ajax следующим образом:

    url  : '<?php echo site_url(); ?>/controllerName/get_trip_data',

Измените controllerName на любое имя контроллера, которое вы используете в методе get_trip_data.

0 голосов
/ 02 ноября 2019

Спасибо, что ответили всем. Проблема, которую я обнаружил, и это было:

return json_encode($trip)

Когда я изменил ее на:

echo json_encode($trip)

Все работало нормально.

0 голосов
/ 02 ноября 2019

Используйте '/' в URL перед именем маршрута или запишите весь путь, как с именем домена + маршрут

$.ajax({
type:'get',
url  : '/get_trip_data', //considering  get_trip_data is also in route 
data: "",
dataType: 'json', 

success: function(result){

    console.log('Success');
    console.log(result);
},
error: function(result){
  console.log('Failed');
  console.log(result);
}

});

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