Ich habe versucht, einen Weg zu finden, um den Ajax-Anruf in Laravel zu bestimmen, aber ich finde kein Dokument dazu.
Ich habe eine index()
Funktion, mit der ich die Situation je nach Art der Anfrage unterschiedlich behandeln möchte. Grundsätzlich ist dies eine Ressourcencontrollermethode, die an eine GET-Anforderung gebunden ist.
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'));
}
Ich kenne die anderen Methoden zum Bestimmen der Ajax-Anfrage in PHP, aber ich möchte etwas Spezielles für Laravel.
Vielen Dank
Aktualisiert:
Ich habe es versucht
if(Request::ajax())
{
echo 'Ajax';
}
Aber ich erhalte Fehler: Non-static method Illuminate\Http\Request::ajax() should not be called statically, assuming $this from incompatible context
Die Klasse zeigt, dass dies keine statische Methode ist.
Illuminate\Http\Request;
in meinen Controllern verwende. Dankerequest()->ajax()
Danke!Um eine Ajax-Anfrage zu überprüfen, können Sie verwenden
if (Request::ajax())
Hinweis: Wenn Sie Laravel 5 verwenden, ersetzen Sie es im Controller
mit
Ich hoffe es wird funktionieren.
quelle
Sie verwenden die falsche
Request
Klasse. Wenn Sie die Fassade wie folgt verwenden möchten:Request::ajax()
Sie müssen diese Klasse importieren:Und nicht
Illumiante\Http\Request
Eine andere Lösung wäre das Einfügen einer Instanz der realen Anforderungsklasse:
(Jetzt müssen Sie hier importieren
Illuminate\Http\Request
)quelle
$ request-> wantJson ()
Sie können versuchen,
$request->wantsJson()
wenn$request->ajax()
nicht funktioniert$request->ajax()
funktioniert, wenn Ihre JavaScript-Bibliothek einen X-Requested-With-HTTP-Header festlegt.Standardmäßig setzt Laravel diesen Header in js / bootstrap.js
In meinem Fall habe ich einen anderen Frontend-Code verwendet und musste diesen Header manuell einfügen
$request->ajax()
, damit er funktioniert.Aber
$request->wantsJson()
überprüfen die axios Abfrage , ohne die Notwendigkeit für einen HeaderX-Requested-With
:quelle
Scheint die richtige Antwort zu sein. http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_ajax
quelle
Für diejenigen, die mit AngularJS- Frontend arbeiten, wird nicht der Ajax-Header verwendet, den laravel erwartet. ( Lesen Sie mehr )
Verwenden Sie Request :: wantJson () für AngularJS:
quelle
Diejenigen, die Laravel-Helfer bevorzugen, können mit Laravel-Helfern überprüfen, ob eine Anfrage Ajax ist
request()
.quelle
quelle
Manchmal
Request::ajax()
funktioniert es nicht, dann verwenden\Request::ajax()
quelle
Führen Sie diese Validierung nach dem Schreiben des Abfragecodes in Ihrer Route oder im Controller durch.
quelle