我正在使用JavaScript学习Ajax,并希望在Laravel 5.4中创建一个Ajax post方法。这些是我的文件......
路线
Route::group(['prefix' => 'admin'],function(){
Route::post('/ccat','PagesContrpllerController@ccat')->name('ccat');
Route::resource('/products' , 'ProductController');
});
ProductCategoryController
public function ccat(Request $request){
return 'hello this is post method';
}
的JavaScript
function sendfunc(name , level , parent){
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if (xhr.readyState == 4 && xhr.status==200) {
console.log(this.responseText);
}
}
xhr.open("POST", "ccat", true);
xhr.setRequestHeader("Content-type", "application/x-www-formurlencoded");
xhr.send("fname=Henry&lname=Ford");
}
我希望控制台中有'hello this is the post method'
,但它会返回:
POST http://localhost:8000/admin/product/ccat 404(未找到)
控制台发生了什么?即使我将URL更改为:http://localhost:8000/admin/ccat`它也会返回:
POST http://localhost:8000/admin/ccat 500(内部服务器错误)
感谢您的帮助,并忽略了错误的编码。 :)
答案 0 :(得分:0)
我发现我的错误是csrf_token
,所以我补充说:
<meta name="csrf-token" content="{{ csrf_token() }}" />
到页面标题并获取csrf_token
中的javascript
并通过以下方式将其发送到后期路线:
xhr.setRequestHeader("X-CSRF-TOKEN", document.head.querySelector("[name=csrf-token]").content )
;
它的工作原理。希望对别人有用