Saya telah mencoba menemukan cara untuk menentukan panggilan ajax di Laravel tetapi saya tidak menemukan dokumen apa pun tentangnya.
Saya memiliki index()
fungsi yang ingin saya tangani secara berbeda berdasarkan sifat permintaan. Pada dasarnya ini adalah metode pengontrol sumber daya yang terikat ke permintaan 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'));
}
Saya tahu metode lain untuk menentukan permintaan Ajax di PHP tetapi saya ingin sesuatu yang spesifik untuk Laravel.
Terima kasih
Diperbarui:
Saya mencoba menggunakan
if(Request::ajax())
{
echo 'Ajax';
}
Tetapi saya menerima kesalahan: Non-static method Illuminate\Http\Request::ajax() should not be called statically, assuming $this from incompatible context
Kelas tersebut menunjukkan bahwa ini bukan metode statis.
Illuminate\Http\Request;
di pengontrol saya. Terima kasihrequest()->ajax()
Terima kasih!Untuk memeriksa permintaan ajax, Anda dapat menggunakan
if (Request::ajax())
Catatan: Jika Anda menggunakan laravel 5, maka di pengontrol ganti
dengan
Saya harap ini akan berhasil.
sumber
Anda menggunakan
Request
kelas yang salah . Jika Anda ingin menggunakan Facade seperti:Request::ajax()
Anda harus mengimpor kelas ini:Dan tidak
Illumiante\Http\Request
Solusi lain akan memasukkan instance dari kelas permintaan nyata:
(Sekarang di sini Anda harus mengimpor
Illuminate\Http\Request
)sumber
$ request-> wantJson ()
Anda dapat mencoba
$request->wantsJson()
jika$request->ajax()
tidak berhasil$request->ajax()
berfungsi jika pustaka JavaScript Anda menyetel header X-Requested-With HTTP.Secara default Laravel mengatur header ini di js / bootstrap.js
Dalam kasus saya, saya menggunakan kode frontend yang berbeda dan saya harus meletakkan tajuk ini secara manual
$request->ajax()
agar berfungsi.Tetapi
$request->wantsJson()
akan memeriksa kueri axios tanpa perlu headerX-Requested-With
:sumber
Sepertinya jawaban yang benar. http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_ajax
sumber
Bagi mereka yang bekerja dengan front-end AngularJS , itu tidak menggunakan header Ajax laravel yang diharapkan. ( Baca lebih lanjut )
Gunakan Request :: wantJson () untuk AngularJS:
sumber
Mereka yang lebih suka menggunakan helper laravel, mereka dapat memeriksa apakah suatu permintaan adalah ajax menggunakan
request()
helper laravel .sumber
sumber
Terkadang
Request::ajax()
tidak berhasil, lalu gunakan\Request::ajax()
sumber
setelah menulis kode jquery, lakukan validasi ini di rute Anda atau di pengontrol.
sumber