php - 在 Laravel 中使用 Fetch API 拉取数据时,`$request->ajax()` 未检测到 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
orAxios
解决方案
Request::ajax()
检查X-Requested-With
标头的存在。
由于您使用的是 fetch,因此您必须手动将此标头添加到选项对象:
fetch(route, {
headers: {
'X-Requested-With': 'XMLHttpRequest'
},
})
例如,由于bootstrap.js 文件的设置方式,Axios 默认使用它。jQuery会为每个请求自动添加它,但跨域请求除外。
推荐阅读
- laravel-5 - 使用 spatie/browsershot 获取 Class 'App\Http\Controllers\Manipulations' not found 错误
- c++ - is_open 返回 true,但 getline 只返回空字符串
- android - 无法在谷歌地图android上动态设置多个标记
- mysql - 如何为员工找到 1 级、2 级、3 级 ... N 级经理
- r - 从相邻单元格栅格 R 中获取值
- c++ - 进入函数前如何设置前一个数组值?
- java - Java 迭代器:这是什么意思:java.util.ArrayList$Itr
- jboss - 无效的
eap 6.4 中的过滤器映射中的 jsp/* - c# - 从 Windows 10 瞄准 .NET 4.0?
- excel - 如何激活目标