我有一个Laravel 5项目正在运行,我正在尝试使用AJAX调用将一些输入数据发送回服务器。但是,我一直遇到内部服务错误。
我有一个"用户"我正在使用的资源:
这是代码:
routes.php文件:
Route::resource('user', 'UserController');
我设置了UserController.php和User.php模型。
我将一个Ajax调用包含在react.js函数中:
saveAndContinue: function(e) {
e.preventDefault()
// Get values via this.refs
email = this.refs.email.getDOMNode().value
request = $.ajax({
url: "/user",
type: "post", success:function(data){
this.setState({email: data})
},
data: {'email': email} ,beforeSend: function(data){console.log(data);}
});
}
我正在使用post / user路由,它应该调用我在控制器中的store函数:
public function store() {
$v = Fan::validate(Input::all());
$email = Input::get('email');
if ( $v->passes() ) {
$user = new User;
$user->email = Input::get('email');
$user->save();
}
return $email;
}
我不知道为什么这不起作用。请帮忙!
编辑: (这仍然无效):
<meta name="csrf-token" content="<?= csrf_token() ?>">
$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}
});
request = $.ajax({
url: "/user",
type: "post", success:function(data){
},
data: {'email': email} ,beforeSend: function(data){console.log(data);}
});
答案 0 :(得分:0)
您无法直接提出将csrf令牌传递给laravel所需的请求:)
$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}
});
这将从头元数据标记中获取CSRF令牌,并将其包含在每个ajax请求的标头中。然后,您需要将元数据和令牌添加到Laravel模板中,例如
<head>
<title></title>
<meta name="csrf-token" content="<?= csrf_token() ?>">
希望这会有所帮助