Axios PATCH请求不是ajax



我正在处理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_WITHaxios可能不设置该标头,但如果您愿意,可以手动设置。

最新更新