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'';}
});
if(Request::ajax())
Parece ser la respuesta correcta. http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_ajax
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''));
}