Задать вопрос
@inviziblll

Как передавать GET параметры Ajax запросом в Kohana?

У меня проблема с Ajax при работе с фремворком Kohana. Как отправить параметры из браузера в экшены Kohana?

Необходимо создать приложение где параметры из JQuery будут Ajax-сом отправляться а экшен Kohana.

Есть экшен - action_timers_list_ajax() он должен получить от Jquery два параметра и возвращать JSON код, для создания постраничной навигации на странице. Параметры: lines - число записей на странице и pages - число страниц.

Главная проблема возникает на стороне контроллера в экшене, он не получает переменных от GET запроса. Я пробовал использовать метод $this->request->query('lines'); но он не работает. Какие методы нужно использовать чтобы передавать через GET параметры в контроллер, используя Ajax ?

Пример моего jQuery кода:
$.ajax({    
    type:"GET",         
    url: "timerslist",
    data: {"lines": "555", "pages": "1"}
    contentType: 'application/json',
    dataType: "json"
}).done(function(response){ 
    console.log(response);    
}).fail(function(xhr, textStatus, error){
    console.log(xhr);
});


Возможно проблема в настройках файла bootstrap.php и необходимо изменить пути ? Я создал путь timerslist к которому со стороны jQuery и идет обращение
Пример кода в bootstrap:
Route::set('timerslist', 'timerslist(<controller>(/<action>))')
	->defaults(array(
                'directory'  => 'index',
                'controller' => 'timer',
                'action' => 'timers_list_ajax',		
	));


Пример кода экшена:
// Ajax action (rout - timerslist)
    public function action_timers_list_ajax(){
  
            $lines = (int) $this->request->query('lines');
            $pages = (int) $this->request->query('pages');
  
            $data = array(
                'lines'    => $lines,
                'pages'  =>  $pages
            );

            var_dump($lines);
            exit; 

            if (Request::initial()->is_ajax()){

                header('Content-Type: text/json; charset=utf-8');  
                json_encode($data);
                exit;    

            }          

    }


Я пытался найти, изменил экшен action_timers_list_ajax(), так чтобы к нему можно было обращаться напрямую из браузера и передавать переменные методом GET. В браузере набирал путь: localhost/my_project/timerslist?lines=555&pages=1

Измененный код

// Ajax action 
    public function action_timers_list_ajax(){

            //  GET request      
            $lines = (int) $this->request->query('lines');
            $pages = (int) $this->request->query('pages');   
            
          
             $data = array(
                    'lines'    => $lines,
                    'pages'  =>  $pages
            );

            var_dump($data);
            exit;            
    }


Но все равно переменные в метод action_timers_list_ajax() не попадают, var_dump() выводит пустую строку.
  • Вопрос задан
  • 882 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@sl1m_dogg
kohana :'(
Ответ написан
Комментировать
WebSpider
@WebSpider
Код правильный, попробуйте вывести var_dump($_GET); — если и тут будет пусто, значит проблема в конфигурации сервера
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы