在routes / api.php中,我有以下路由:
Route::post('/session/storeValue', 'HomeController@storeValue');
在控制器中,我具有AJAX功能:
<script>
function noviArtikal() {
var data = { name: 'User');
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: "POST",
url: '/session/storeValue',
data: data,
success: function() {
console.log("Valueadded");
}
});
};
</script>
但是在发送AJAX调用时找不到错误提示页面。 我在做什么错了?
答案 0 :(得分:3)
因为它是api.php,它将自动将/ api /添加到您的URL。尝试/ api / session / storeValue。
来自文档:
routes / api.php文件中定义的路由嵌套在路由中 由RouteServiceProvider分组。在该组中,/ api URI 前缀是自动应用的,因此您无需手动应用 它到文件中的每条路线。您可以修改前缀和其他 通过修改RouteServiceProvider类来路由组选项。
编辑:
添加名称:
Route::post('/session/storeValue', 'HomeController@storeValue')->name('custom_name');
然后修改您的JavaScript:
$.ajax({
type: "POST",
url: '/session/storeValue',
data: data,
到
$.ajax({
type: "POST",
url: '{{ route('custom_name')}}',
data: data,
编辑2: 是的,不要发送CSRF_TOKEN(检查@Yur Gasparyan答案)
答案 1 :(得分:3)
首先,您不需要将CSRF_TOKEN
发送到api
。检查CSRF-TOKEN
是没有道理的,因为它是一个api。另外,要向api发送请求,您还需要手动添加api
前缀。
答案 2 :(得分:0)
将此代码添加到您的route / web.php
Route::post('/session/storeValue', 'HomeController@storeValue');
答案 3 :(得分:0)
像这样简单地给路线起任何名字:
Route::post('/session/storeValue', 'HomeController@storeValue')->name('somename');
,在您的ajax调用中,只需将url属性更改为:
url: '{{ route('somename')}}',
Laravel通过RouteServiceProvider自动将/ api附加到api路由,并且位于/Providers
文件夹中。
在进行Api通话时,您也不需要csrf_token
。