Я пытался найти способ определить вызов ajax в Laravel, но не нашел никакого документа по этому поводу.
У меня есть index()
функция, которую я хочу обрабатывать по-разному, в зависимости от характера запроса. По сути, это метод контроллера ресурсов, привязанный к запросу 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'));
}
Я знаю другие методы определения запроса Ajax в PHP, но мне нужно что-то особенное для Laravel.
Спасибо
Обновлено:
Я пробовал использовать
if(Request::ajax())
{
echo 'Ajax';
}
Но я получаю сообщение об ошибке: Non-static method Illuminate\Http\Request::ajax() should not be called statically, assuming $this from incompatible context
Класс показывает, что это не статический метод.
Illuminate\Http\Request;
в своих контроллерах. Спасибоrequest()->ajax()
Спасибо!Чтобы проверить запрос ajax, вы можете использовать
if (Request::ajax())
Примечание: если вы используете laravel 5, то в контроллере замените
с участием
Надеюсь, это сработает.
источник
Вы используете неправильный
Request
класс. Если вы хотите использовать Фасад как:Request::ajax()
вам нужно импортировать этот класс:И нет
Illumiante\Http\Request
Другое решение - внедрение экземпляра реального класса запроса:
(Теперь вам нужно импортировать
Illuminate\Http\Request
)источник
$ запрос-> хочетJson ()
Можете попробовать,
$request->wantsJson()
если$request->ajax()
не работает$request->ajax()
работает, если ваша библиотека JavaScript устанавливает HTTP-заголовок X-Requested-With.По умолчанию Laravel устанавливает этот заголовок в js / bootstrap.js
В моем случае я использовал другой код внешнего интерфейса, и мне пришлось поместить этот заголовок вручную,
$request->ajax()
чтобы он работал.Но
$request->wantsJson()
проверим запрос axios без заголовкаX-Requested-With
:источник
Похоже, это правильный ответ. http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_ajax
источник
Для тех, кто работает с интерфейсом AngularJS , он не использует ожидаемый laravel заголовок Ajax. ( Читать дальше )
Используйте Request :: wantJson () для AngularJS:
источник
Те, кто предпочитает использовать помощники laravel, могут проверить, является ли запрос ajax, с помощью
request()
помощника laravel .источник
источник
Иногда
Request::ajax()
не работает, тогда используйте\Request::ajax()
источник
после написания кода jquery выполните эту проверку в своем маршруте или в контроллере.
источник