J'ai essayé de trouver un moyen de déterminer l'appel ajax dans Laravel mais je ne trouve aucun document à ce sujet.
J'ai une index()
fonction que je souhaite gérer différemment selon la nature de la demande. Fondamentalement, il s'agit d'une méthode de contrôleur de ressources liée à la requête 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'));
}
Je connais les autres méthodes de détermination de la requête Ajax en PHP mais je veux quelque chose de spécifique à Laravel.
Merci
Actualisé:
J'ai essayé d'utiliser
if(Request::ajax())
{
echo 'Ajax';
}
Mais je reçois une erreur: Non-static method Illuminate\Http\Request::ajax() should not be called statically, assuming $this from incompatible context
La classe montre qu'il ne s'agit pas d'une méthode statique.
Illuminate\Http\Request;
dans mes contrôleurs. Mercirequest()->ajax()
Merci!Pour vérifier une requête ajax, vous pouvez utiliser
if (Request::ajax())
Remarque: si vous utilisez laravel 5, dans le contrôleur, remplacez
avec
J'espère que ça va marcher.
la source
Vous utilisez la mauvaise
Request
classe. Si vous souhaitez utiliser la façade comme:Request::ajax()
vous devez importer cette classe:Et pas
Illumiante\Http\Request
Une autre solution consisterait à injecter une instance de la classe de requête réelle:
(Maintenant, ici, vous devez importer
Illuminate\Http\Request
)la source
$ request-> wantJson ()
Vous pouvez essayer
$request->wantsJson()
si$request->ajax()
cela ne fonctionne pas$request->ajax()
fonctionne si votre bibliothèque JavaScript définit un en-tête HTTP X-Requested-With.Par défaut, Laravel définit cet en-tête dans js / bootstrap.js
Dans mon cas, j'ai utilisé un code frontal différent et j'ai dû mettre cet en-tête manuellement pour
$request->ajax()
qu'il fonctionne.Mais
$request->wantsJson()
vérifiera la requête axios sans avoir besoin d'un en-têteX-Requested-With
:la source
Cela semble être la bonne réponse. http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_ajax
la source
Pour ceux qui travaillent avec AngularJS front-end, il n'utilise pas l'en-tête Ajax que laravel attend. ( Lire la suite )
Utilisez Request :: wantJson () pour AngularJS:
la source
Ceux qui préfèrent utiliser les helpers laravel peuvent vérifier si une requête est ajax en utilisant laravel
request()
helper.la source
la source
Parfois
Request::ajax()
ne fonctionne pas, puis utilisez\Request::ajax()
la source
après avoir écrit le code jquery effectuez cette validation dans votre route ou dans controller.
la source