`$ request -> ajax ()` не обнаруживает запрос ajax при использовании Fetch API для извлечения данных в Laravel - PullRequest
0 голосов
/ 30 мая 2020

В моем приложении Laravel я использую Fetch API для загрузки данных при прокрутке. Ниже мой код JS в файле лезвия

let route = '{{ route("load") }}' + '?q=' + encodeURI('{{ $para }}');
fetch(route)
.then(response => {
   if(!response.ok) {
       throw new Error('Network response was not ok');
   }
   return response.text();
})
.then(data => {                       
   console.log(data);                       
})
.catch((error) => {
   console.error('Error:', error);
})

И в моем контроллере

public function loadData( Request $request )
{
    if( $request->ajax() ) {

       return $request->query('q');

     }
     return 'Not Ajax!';
}

Он всегда возвращает 'Not Ajax!';

I я не уверен, почему это происходит. Это не было проблемой с другими библиотеками, такими как jQuery или Axios

Ответы [ 3 ]

2 голосов
/ 30 мая 2020

Request::ajax() проверяет наличие заголовка X-Requested-With.

Поскольку вы используете fetch, вам нужно вручную добавить этот заголовок в объект options :

fetch(route, {
  headers: {
    'X-Requested-With': 'XMLHttpRequest'
  },
})

Ax ios, например, использует это по умолчанию из-за того, как настроен файл bootstrap. js . jQuery добавляет его автоматически для каждого запроса, кроме междоменных запросов.

0 голосов
/ 30 мая 2020

Будьте осторожны при использовании return в ваших методах. Попробуйте включить return 'Not Ajax!'; в другом

else{
    return 'Not Ajax!';
}
0 голосов
/ 30 мая 2020

Попробуйте использовать функцию request () -> ajax () вместо $ request -> ajax () . Я думаю, проблема в том, что вы импортировали неправильный запрос вверху. У меня тоже бывает из-за Editor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...