我正在处理PATCH请求。请求会按原样通过并返回,但它不是ajax。
我添加了一个if语句来检查这一点。为什么可能使用Axios而不是ajax?我认为Axios是一个围绕ajax的库。
有什么建议吗?
(尝试使用GET或POST,结果相同。不是Ajax(
在HTML 中
<button data-id="1">button</button>
在Javascript文件中
let button = document.querySelector('button');
button.addEventListener('click', event => {
let id = button.getAttribute('data-id');
patchRequest(id);
});
const patchRequest = async (id) => {
try {
const response = await axios.patch(`/action/${id}`);
return response.data.success;
} catch (err) {
return console.log(err.response.data);
}
};
控制器内部
public function __invoke(Request $request)
{
// do something and then respond
if($request->ajax()) {
return response()->json(['success' => $result], 201);
} else {
return 'not ajax';
}
}
在web.php(Routes文件(中
Route::patch('action/{id}', SomeController::class);
更新
用户@T.J.Crowder帮助发表了评论。
解决我问题的是添加这个
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
我怀疑ajax
方法正在查找ajax请求中经常使用的头HTTP_X_REQUESTED_WITH
。axios
可能不设置该标头,但如果您愿意,可以手动设置。