Tenho tentado encontrar uma maneira de determinar a chamada de Ajax no Laravel, mas não encontrei nenhum documento a respeito.
Tenho uma index()
função com a qual desejo lidar com a situação de maneira diferente com base na natureza da solicitação. Basicamente, este é um método de controlador de recurso vinculado à solicitação GET.
public function index()
{
if(!$this->isLogin())
return Redirect::to('login');
if(isAjax()) // This is what i am needing.
{
return $JSON;
}
$data = array();
$data['records'] = $this->table->fetchAll();
$this->setLayout(compact('data'));
}
Eu conheço os outros métodos de determinar a solicitação Ajax em PHP, mas quero algo específico para o Laravel.
obrigado
Atualizada:
Tentei usar
if(Request::ajax())
{
echo 'Ajax';
}
Mas estou recebendo um erro: Non-static method Illuminate\Http\Request::ajax() should not be called statically, assuming $this from incompatible context
A aula mostra que este não é um método estático.
Illuminate\Http\Request;
em meus controladores. Obrigadorequest()->ajax()
Obrigado!Para verificar uma solicitação ajax, você pode usar
if (Request::ajax())
Nota: Se você estiver usando laravel 5, então no controlador substitua
com
Espero que funcione.
fonte
Você está usando a
Request
classe errada . Se você deseja usar a fachada como:Request::ajax()
você deve importar esta classe:E não
Illumiante\Http\Request
Outra solução seria injetar uma instância da classe de solicitação real:
(Agora aqui você tem que importar
Illuminate\Http\Request
)fonte
$ request-> wantJson ()
Você pode tentar
$request->wantsJson()
se$request->ajax()
não funcionar$request->ajax()
funciona se sua biblioteca JavaScript definir um cabeçalho HTTP X-Requested-With.Por padrão, o Laravel define este cabeçalho em js / bootstrap.js
No meu caso, usei um código de front-end diferente e tive que colocar esse cabeçalho manualmente para
$request->ajax()
funcionar.Mas
$request->wantsJson()
irá verificar a consulta axios sem a necessidade de um cabeçalhoX-Requested-With
:fonte
Parece ser a resposta certa. http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_ajax
fonte
Para aqueles que trabalham com o front-end AngularJS , ele não usa o laravel de cabeçalho Ajax esperado. ( Leia mais )
Use Request :: wantJson () para AngularJS:
fonte
Aqueles que preferem usar auxiliares de laravel, podem verificar se uma solicitação é ajax usando
request()
auxiliar de laravel .fonte
fonte
Às vezes
Request::ajax()
não funciona, então use\Request::ajax()
fonte
depois de escrever o código jquery execute esta validação em sua rota ou no controlador.
fonte