I know this question has been out there many times, however I am unable to get through this.
Here is my route:
Route::post('/masters/board/edit', 'MastersController@editBoard');
My Controller:
public function editBoard() {
$board = Board::findOrFail(Input::get('id'));
$board->nick_name = Input::get('nick_name');
$board->board_name = Input::get('board');
$board->type = Input::get('type');
$board->save();
return Redirect::action('MastersController@getBoards');
}
My JS:
$("#edit_form").submit(function(e) {
e.preventDefault();
var type = "#edit_form";
var formData = {
id : $(type + " #id").val(),
nick_name : $(type + " #nick_name").val(),
name : $(type + " #board").val()
}
$.ajax({
type: "POST",
url: "masters/board/edit",
data: formData,
success: function(data) {
console.log(data);
}
});
});
});
This is throwing an error:
[Error] Failed to load resource: the server responded with a status of 500 (Internal Server Error) (edit, line 0)
Can anyone see a reason why?
Add a meta tag with the csrf_token
.
<meta name="_token" content="{{ csrf_token() }}" />
And add that token to your data.
var formData = {
id : $(type + " #id").val(),
nick_name : $(type + " #nick_name").val(),
name : $(type + " #board").val()
_token: $('meta[name="_token"]').attr('content')
}
If you are going to perform lot of post requests try the following. Use the following script to setup your ajax requests with the csrf token.
$(function() {
$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[name="_token"]').attr('content')
}
});
});
If you are using laravel 5 this should work out of the box. If not you need to edit your app/filters.php
file.
Replace the csrf filter with the following.
Route::filter('csrf', function() {
$token = Request::ajax() ? Request::header('X-CSRF-Token') : Input::get('_token');
if (Session::token() != $token)
throw new Illuminate\Session\TokenMismatchException;
});
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments