php laravel

php - Laravel-verifique si la solicitud de Ajax



laravel templates free (10)

He estado tratando de encontrar una manera de determinar la llamada ajax en Laravel pero no encuentro ningún documento al respecto.

Tengo una función index() que quiero manejar 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 de Ajax en PHP, pero quiero algo específico para Laravel.

Gracias

Actualizado:

Traté de usar

if(Request::ajax()) { echo ''Ajax''; }

Pero recibo 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.


$ request-> wantsJson ()

Puede 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

window.axios = require(''axios''); window.axios.defaults.headers.common[''X-Requested-With''] = ''XMLHttpRequest'';

En mi caso, utilicé un código de interfaz diferente y tuve que poner este encabezado manualmente para que $request->ajax() funcione.

Pero $request->wantsJson() verificará la consulta axios sin la necesidad de un encabezado X-Requested-With :

// Determine if the current request is asking for JSON. This checks Content-Type equals application/json. $request->wantsJson() // or /Request::wantsJson() // not /Illuminate/Http/Request


A veces Request::ajax() no funciona, luego use /Request::ajax()


Aquellos que prefieren usar laravel helpers pueden verificar si una solicitud es ajax usando laravel request() helper.

if(request()->ajax()) // code


Está utilizando la clase de Request incorrecta. Si quiere usar la Fachada como: Request::ajax() debe importar esta clase:

use Illuminate/Support/Facades/Request;

Y no Illumiante/Http/Request

Otra solución sería inyectar una instancia de la clase de solicitud real:

public function index(Request $request){ if($request->ajax()){ return "AJAX"; }

(Ahora aquí tienes que importar Illuminate/Http/Request )


Para aquellos que trabajan con AngularJS front-end, no utiliza el encabezado Ajax que espera laravel. ( Leer más )

Request::wantsJson() uso Request::wantsJson() para AngularJS:

if(Request::wantsJson()) { // Client wants JSON returned }


Para verificar una solicitud ajax puede usar if (Request::ajax())

Nota: Si está utilizando laravel 5, entonces en el controlador reemplace

use Illuminate/Http/Request;

con

use Request;

Espero que funcione


Quizás esto ayude. Tienes que referir el @param

/** * Display a listing of the resource. * * @param Illuminate/Http/Request $request * @return Response */ public function index(Request $request) { if($request->ajax()){ return "AJAX"; } return "HTTP"; }


después de escribir el código jquery, realice esta validación en su ruta o en el controlador.

$.ajax({ url: "/id/edit", data: name:name, method:''get'', success:function(data){ console.log(data);} }); Route::get(''/'', function(){ if(Request::ajax()){ return ''it''s ajax request'';} });



public function index() { if(!$this->isLogin()) return Redirect::to(''login''); if(Request::ajax()) // This is check ajax request { return $JSON; } $data = array(); $data[''records''] = $this->table->fetchAll(); $this->setLayout(compact(''data'')); }