He estado tratando de encontrar una manera de determinar la llamada ajax en Laravel pero no encuentro ningún documento al respecto.
Tengo una index()
función que quiero manejar la situación de manera diferente según la naturaleza de la solicitud. Básicamente, este es un método de controlador de recursos que está vinculado a la solicitud 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'));
}
Conozco los otros métodos para determinar la solicitud Ajax en PHP pero quiero algo específico para Laravel.
Gracias
Actualizado:
Intenté usar
if(Request::ajax())
{
echo 'Ajax';
}
Pero estoy recibiendo un error: Non-static method Illuminate\Http\Request::ajax() should not be called statically, assuming $this from incompatible context
La clase muestra que este no es un método estático.
Illuminate\Http\Request;
en mis controladores. Graciasrequest()->ajax()
¡Gracias!Para verificar una solicitud ajax, puede usar
if (Request::ajax())
Nota: Si está utilizando laravel 5, reemplace en el controlador
con
Espero que funcione.
fuente
Estás usando la
Request
clase incorrecta . Si desea utilizar la fachada como:Request::ajax()
debe importar esta clase:Y no
Illumiante\Http\Request
Otra solución sería inyectar una instancia de la clase de solicitud real:
(Ahora aquí tienes que importar
Illuminate\Http\Request
)fuente
$ solicitud-> wantsJson ()
Puedes probar
$request->wantsJson()
si$request->ajax()
no funciona$request->ajax()
funciona si su biblioteca de JavaScript establece un encabezado HTTP X-Requested-With.Por defecto, Laravel establece este encabezado en js / bootstrap.js
En mi caso, utilicé un código de interfaz diferente y tuve que poner este encabezado manualmente para
$request->ajax()
que funcionara.Pero
$request->wantsJson()
verificará la consulta axios sin la necesidad de un encabezadoX-Requested-With
:fuente
Parece ser la respuesta correcta. http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_ajax
fuente
Para aquellos que trabajan con el front-end de AngularJS , no usa el encabezado Ajax que laravel espera. ( Leer más )
Utilice Request :: wantsJson () para AngularJS:
fuente
Aquellos que prefieren usar los ayudantes de laravel pueden verificar si una solicitud es ajax usando el
request()
ayudante de laravel .fuente
fuente
A veces
Request::ajax()
no funciona, luego usa\Request::ajax()
fuente
después de escribir el código jquery, realice esta validación en su ruta o en el controlador.
fuente