Javascript Ajax post方法在Laravel 5中不起作用

时间:2017-11-08 11:50:31

标签: javascript ajax laravel laravel-5.4

我正在使用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(内部服务器错误)

感谢您的帮助,并忽略了错误的编码。 :)

1 个答案:

答案 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 );
它的工作原理。希望对别人有用