Как использовать AJAX с Laravel?


у Меня есть select, который, когда я изменить значение его, он должен изменить порядок списка, ex.: id, имя пользователя, etc. без Laravel, я хотел бы использовать функцию onchange и перейду стандарт сортировки pra страницу PHP, что бы распечатать этот список отсортирован по мне...

, Но как это сделать с помощью Laravel? Я должен генерировать view? Попытался, но не смог...

пытался здесь, я думаю, что я не хватает в час, что создает views..

у меня есть view макет, который имеет @yeld ('content'), в случае, если мне нужно обновить только эту content, однако, когда я делаю:

$this->layout->content = View::make('usuarios.index', $variaveis);

. Он дублирует мой макет внутри div content

//Следует controller

   if(Request::ajax()){
       $usuarios = Usuario::orderBy(Input::get('order'),'ASC')->get();
       $variaveis = array('usuarios' => $usuarios);
       return View::make('usuarios.index', $variaveis);;
   }else{
       $usuarios = Usuario::orderBy('id','ASC')->get();
       $variaveis = array('usuarios' => $usuarios);
       $this->layout->content = View::make('usuarios.index', $variaveis);
   }

Но он это никогда не приходить в Request::ajax (), и я не могу понять, почему

Author: tissei, 2014-02-06

4 answers

Только попасть Request::ajax(), когда запрос выполняется через Ajax! :-)

Но, внимание: это проверяется с помощью HTTP-заголовка HTTP_X_REQUESTED_WITH. Эта header будет автоматически отправлено на запросы Ajax, сделанные jQuery и другими библиотеками JavaScript, но если вы не используете, нужно добавить его, чтобы Laravel, признайте, что вызов Ajax:

XHR.setRequestHeader("X-Requested-With", "XmlHttpRequest");

Другой альтернативой является использование различных функций в контроллере: Ajax другую информацию нормы, и оставить в if (Request::ajax())

 2
Author: J. Bruni, 2014-02-06 18:27:58

Твой вопрос не с laravel. Ты должен сделать то же самое, выбирает события с javascript и собирает результат таким же образом, что ты делал до laravel.

В laravel тебе будет забрать твою функция, которая делает select и сделать что-то, более или менее

public function getConsulta()
{
   //tua consulta normal...  

   if (Request::ajax()) 
   {
      return Response::json($dados);
   }
}

В javascript, который ты должен взять этот json и обработать, чтобы сделать update в таблице

, Как ты, это, возвращая все в твоей каналы и отобразить все это, ты, может сделать это в твой layout

@if(!Request::ajax())

   // teu código normal quando não é ajax

@else

   @yield('content') // isso vai fazer renderizar só a tua view

@endif

Необходимо сделать это, потому что ты та давая extends в твоей view

В твой controller ты иди, пока не сможете изменить, оставив его так

   $usuarios = Usuario::orderBy(isset(Input::get('order'))?Input::get('order'):'id','ASC')->get();
   $variaveis = array('usuarios' => $usuarios);
   return View::make('usuarios.index', $variaveis);;

Будет работать, чтобы твои две ситуации, когда будет или не ajax.

 3
Author: Daniel Lemes, 2014-02-06 13:33:39

Я не понимаю lavarel, работа с zend и я думаю, что это работает в основном так же, в ajax, вам придется сделать какой-то запрос, чтобы получить этот возврат, то есть, в вашем controller будет необходимости создает action только, чтобы удовлетворить этот запрос, и каналы, чтобы подключить содержание...его я делал в zend, я должен был бы дать disable layout, что он использует только содержание каналы конкретной, вероятно, в lavarel это должно быть есть...

 2
Author: Kenny Rafael, 2014-02-06 10:42:10

- Это в основном одно и то же, просто замените каталоги и вставить токен при отправке формы, ниже приведен пример, который я реализовал здесь:

$.ajax({
    headers: {
        'X-CSRF-Token': $('input[name="_token"]').val()
    },
    type: 'GET',
    url: "{{ URL::to(teste/ajax) }}",
    data: 'nome='+$('input[name="nome"]').val(),
    enctype: 'multipart/form-data',
    success: function(data){
        $(location).attr('href', "{{ URL::to(Request::path()) }}");
    },
    error: function(){
        alert('Erro no Ajax !');
    }
});
 0
Author: tiaguinhow, 2014-02-06 11:18:16