當我提交表單時,出現此錯誤,頁面自動重新加載,但瀏覽器中的網址顯示我在表單中發佈的路由和內容。然後,如果我繼續並重新提交而不重新加載頁面,則工作得很好。難道我沒有發佈令牌本身?我已經將meta標籤添加到頭部。Laravel AJAX 500內部服務器錯誤,令牌匹配
<meta name="csrf-token" content="{{ csrf_token() }}" />
JS:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$('#postForm').submit(function(){
var body = $('#postbody').val();
var profileId = $('#user_id').text();
$.ajax({
type: "POST",
url: "/post/"+profileId,
data: {post:body, profile_id:profileId},
success: function(data) {
console.log(data);
}
});
});
路線:
Route::post('/post/{id}', [
'uses' => '\App\Http\Controllers\[email protected]',
'as' => 'post.message',
'middleware' => ['auth'],
]);
控制器:
public function postMessage(Request $request, $id)
{
if(Request::ajax())
{
$this->validate($request, [
'post' => 'required|max:1000',
]);
$newMessage = Auth::user()->posts()->create([
'body' => $request->input('post'),
'profile_id' => $id
]);
}
}
查看:
<form role="form" action="#" id="postForm">
<div class="feed-post form-group">
<textarea class="form-control feed-post-input" id="postbody" name="post"></textarea>
<div class="btn-bar">
<button type="submit" class="btn btn-default btn-post"></button>
</div>
</div>
<input type="hidden" name="_token" value="{{ csrf_token() }}"/>
</form>
UPDATE:
因此,日誌說,在我的控制器「支持::阿賈克斯()不應該被靜態調用」。我刪除了該代碼,現在它工作正常。但是,如果有更好的解決方法,我想知道是否刪除它可以。謝謝!
答:它是通過改變
if (Request::ajax()){
// code...
}
到
if ($request->ajax()){
// code...
}
嗨,檢查我的Ajax解決方案提交對這個職位http://stackoverflow.com/questions/35284665/use-ajax-形式in-laravel-5/35284853#35284853 – umefarooq