【发布时间】:2015-02-26 06:41:08
【问题描述】:
routes.php
Route::get('/register',function(){
$data = 'Register';
return View::make('user.register');
});
Route::post('/register',function(){
$inputData = Input::get('formData');
parse_str($inputData, $formFields);
$userData = array(
'name' => $formFields['name'],
'email' => $formFields['email'],
'password' => $formFields['password'],
'password_confirmation' => $formFields[ 'password_confirmation'],
);
$rules = array(
'name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'required|min:6|confirmed',
);
$validator = Validator::make($userData,$rules);
if($validator->fails())
return Response::json(array(
'fail' => true,
'errors' => $validator->getMessageBag()->toArray()
));
else {
//save password to show to user after registration
$password = $userData['password'];
//hash it now
$userData['password'] = Hash::make($userData['password']);
unset($userData['password_confirmation']);
//save to DB user details
if(User::create($userData)) {
//return success message
return Response::json(array(
'success' => true,
'email' => $userData['email'],
'password' => $password
));
}
}
});
Register.blade.php
<html>
<head>
<link href='//fonts.googleapis.com/css?family=Lato:100' rel='stylesheet' type='text/css'>
<script src="./jquery.js"></script>
</head>
<body>
{!!Form::open(['url'=>'register'],array('id'=>'regForm'))!!}
{!! Form::label('name', 'Name', array('class'=>'control-label')) !!}
{!! Form::text('name', null, array('class'=>'form-control','placeholder'=>'Enter Name')) !!}
<div id ="name_error"></div>
{!! Form::label('email', 'Email', array('class'=>'control-label')) !!}
{!! Form::text('email', null, array('class'=>'form-control','placeholder'=>'Enter Email')) !!}
<div id ="email_error"></div>
{!! Form::label('password', 'Password', array('class'=>'control-label')) !!}
{!! Form::password('password', array('class'=>'form-control', 'placeholder'=>'Password')) !!}
<div id ="password_error"></div>
{!! Form::label('password_confirmation', 'Confirm Password',array('class'=>'control-label')) !!}
{!! Form::password('password_confirmation', array('class'=>'form-control','placeholder'=>'Confirm Password')) !!}
{!! Form::submit('Register', array('class'=>'btn btn-warning btn-lg')) !!}
{!! Form::close() !!}
<div id="successMessage"></div>
<script>
$( "#regForm" ).submit(function( event ) {
event.preventDefault();
var $form = $( this ),
data = $form.serialize(),
url = $form.attr( "action" );
var posting = $.post( url, { formData: data } );
posting.done(function( data ) {
if(data.fail) {
$.each(data.errors, function( index, value ) {
var errorDiv = '#'+index+'_error';
$(errorDiv).addClass('required');
$(errorDiv).empty().append(value);
});
$('#successMessage').empty();
}
if(data.success) {
$('.register').fadeOut(); //hiding Reg form
var successContent = '<div class="message"><h3>Registration Completed Successfully</h3><h4>Please Login With the Following Details</h4><div class="userDetails"><p><span>Email:</span>'+data.email+'</p><p><span>Password:********</span></p></div></div>';
$('#successMessage').html(successContent);
} //success
}); //done
});
</script>
</div>
</body>
</html>
所以我的问题是我已经在我的 xampp 服务器上安装了 laravel。所以我想使用 post 发送一个 ajax 请求,但每当我发送请求时,它都会显示 500 Internal Server Error 和 TokenMismatchException 。我已经在谷歌上搜索了所有内容并尝试了每一个但仍然得到同样的错误。我无法理解问题出在哪里,所以请任何人帮助我
【问题讨论】:
-
显然问题出在 CSRF 令牌上。我没有注意到 html 中有任何错误 - 所以它应该出现在页面上。你能否在 'data = $form.serialize()' 之后添加 'console.log(data)' ,顺便说一下 - 你的语法有错误,你应该在每行语句后使用分号而不是逗号: var $form = $( 这个 ), 数据 = $form.serialize(),
-
在 console.log(data) 之后,这个结果我得到 _token=AsQbtw87AujjiIXC6zc9WqJmlOrrXk8iPjQBjBrk&name=&email=&password=&password_confirmation=
-
@naneri ,我正在传递 CSRF 令牌但仍然收到错误