在 Laravel 中使用 Fetch API 拉取数据时,`$request->ajax()`

在我的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!';

}

它总是返回“不是 Ajax!”;


我不确定为什么会这样。这不是其他库的问题,例如jQuery或Axios


眼眸繁星
浏览 131回答 3
3回答

慕丝7291255

Request::ajax()检查标头是否存在X-Requested-With。由于您使用的是获取,因此必须手动将此标头添加到选项对象中:fetch(route, {  headers: {    'X-Requested-With': 'XMLHttpRequest'  },})例如,由于bootstrap.js 文件的设置方式,Axios 默认使用它。jQuery会为每个请求自动添加它,但跨域请求除外。

月关宝盒

在您的方法中使用“return”时要小心。尝试附上 return 'Not Ajax!'; 在别的else{     return 'Not Ajax!'; }

qq_遁去的一_1

请尝试使用request()->ajax()函数而不是$request->ajax()。我认为问题是您在顶部导入了错误的请求。它发生在我身上也是因为编辑器
打开App,查看更多内容
随时随地看视频慕课网APP