我有一篇帖子的評論列表,我希望用戶能夠編輯他們的帖子,如果他們想。在列表中有一個編輯按鈕(如果帖子屬於登錄的用戶),並在點擊時發出ajax請求並返回視圖。該視圖包含編輯註釋的表單並預裝了註釋詳細信息。到目前爲止,一切運作良好。通過ajax發送Laravel 5補丁請求
現在這裏是我遇到一個不清楚的問題的部分。當我想提交表單,使用補丁請求時,出現錯誤500的結構是這樣的:
用戶訪問
/posts/{id}
在該視圖中的所有意見中列出。當用戶點擊編輯按鈕
/posts/{id}/comments/{comment_id}/edit
被調用時,與 表格視圖當用戶提交此表Route::patch('/posts/{id}/comments/{comment_id}/edit', ['as' => 'posts.editComment', 'uses' => '[email protected]']
是 觸發返回- 。在失敗。
在Chrome中使用網絡檢查器我可以單擊錯誤。在那裏它告訴我有一個令牌不匹配?我沒有修改任何標記,只是使用默認的表單。表單代碼如下:
{!! Form::model($comment, ['method' => 'PATCH', 'route' => ['posts.editComment', $comment->post_id, $comment->id], 'id' => 'editComment' . $comment->id]) !!}
<div class="comment-edit">
{!! Form::textarea('comment', null, ['class' => 'form-control', 'style' => 'height: 80px;']) !!}
</div>
<div class="comment-edit-buttons text-right">
{!! Form::button(trans('general.cancel'), ['class' => 'btn btn-default btn-sm cancelEditComment', 'data-postId' => $comment->post_id]) !!}
{!! Form::button(trans('general.edit'), ['class' => 'btn btn-primary btn-sm editComment', 'data-postId' => $comment->post_id, 'data-commentId' => $comment->id]) !!}
</div>
{!! Form::close() !!}
它轉換爲像瀏覽器:
<form method="POST" action="http://www.domain.com/posts/29/comments/12/edit" accept-charset="UTF-8" id="editComment12">
<input name="_method" type="hidden" value="PATCH">
<input name="_token" type="hidden" value="generated token value">
<div class="comment-edit">
<textarea class="form-control" style="height: 80px;" name="comment" cols="50" rows="10">nieuwe comment</textarea>
</div>
<div class="comment-edit-buttons text-right">
<button class="btn btn-default btn-sm cancelEditComment" data-postId="29" type="button">Annuleren</button>
<button class="btn btn-primary btn-sm editComment" data-postId="29" data-commentId="12" type="button">Bewerken</button>
</div>
</form>
我真的不知道在哪裏看?有沒有特別的方法使用Ajax發送PATCH請求?
我在Laracasts上找到了這個討論,向下滾動到Lukas帖子,他討論了一個未加密的令牌問題,這是您可能遇到的問題。 https://laracasts.com/discuss/channels/general-discussion/csrf-form-token-doesnt-match-session-token – Azeame
謝謝,我馬上去看看,讓你知道它是否有幫助。 – Ben
我認爲你的鏈接有助於進一步得到。但現在我得到了405 - 方法不允許。雖然路線已定義且控制器方法存在..? – Ben