引导模式、jquery ajax表单验证和laravel中的db插入
我正在尝试使用引导模式,使用finally db insert进行实时电子邮件检查和验证。我看了好几本教程,但不能把它们全部放在一起。我有0个js技能。我有一个模式中的表单,它以正常的laravel方式提交和验证。唯一的问题是,如果它有错误,我们会在页面刷新时看到消息,而不是在模式中:( 我在一篇文章中添加了一些ajax内容,使我的表单能够在不刷新的情况下将数据提交到数据库中。:)但是我无法确定如何在插入时正确返回错误和成功消息。到目前为止,唯一有效的错误是必填字段,颜色编码为红色,但没有显示任何消息 我想达到的是这一点,但在一个模式 这是我目前掌握的代码: 形式 控制器:引导模式、jquery ajax表单验证和laravel中的db插入,ajax,modal-dialog,laravel,Ajax,Modal Dialog,Laravel,我正在尝试使用引导模式,使用finally db insert进行实时电子邮件检查和验证。我看了好几本教程,但不能把它们全部放在一起。我有0个js技能。我有一个模式中的表单,它以正常的laravel方式提交和验证。唯一的问题是,如果它有错误,我们会在页面刷新时看到消息,而不是在模式中:( 我在一篇文章中添加了一些ajax内容,使我的表单能够在不刷新的情况下将数据提交到数据库中。:)但是我无法确定如何在插入时正确返回错误和成功消息。到目前为止,唯一有效的错误是必填字段,颜色编码为红色,但没有显示任
if(Request::ajax()) {
$rules = [
'f_name' => 'required',
'l_name' => 'required',
'user_number' => 'required',
'email' => 'required|email',
'gender' => 'required',
'campus' => 'required',
'status' => 'required',
'contractor' => 'required',
'password' => 'required',
];
$validation = Validator::make(Input::all(),$rules);
$response = ["error" => ['error'=>'true','status'=>'Sorry there has been an error'],
"success" => ['success'=>true,'message'=>'The new staff member was successfully added to the system']
];
if($validation->fails())
{
return Response::json($response["error"]);
}
else
{
$user = User::find_by_email(Input::get('email'));
if($user) {
// send a message back via ajax that the email already exists
if($user) {
return Redirect::back()->with_input()
->with('status','The email address is already in use');
}
}
$staff = new User(array(
'f_name' => Input::get('f_name'),
'l_name' => Input::get('l_name'),
'user_number' => Input::get('user_number'),
'username' => Input::get('username'),
'email' => Input::get('email'),
'password' => Hash::make(Input::get('password')),
'status' => Input::get('status'),
'gender' => Input::get('gender'),
));$staff->save();
// Automatically create a profile for the new staff member
$staff_profile = new Profile(array(
'user_id' => $teacher->id,
'contractor' => Input::get('contractor'),
'campus' => Input::get('campus'),
));
$staff_profile->save();
return Response::json($response["success"]);
}
}
JQuery
$('#add_staff').submit(function(){
var datas = $(this).serialize();
url = $(this).attr('action');
$.ajax({
type: 'POST',
url: url,
data: datas,
dataType: 'JSON',
success: function(msg,status){
if(msg.error)
{
$(f_name).removeClass('required');
$(f_name).addClass('required field error');
$(l_name).removeClass('required');
$(l_name).addClass('required field error');
$(user_number).removeClass('required');
$(user_number).addClass('required field error');
$(email).removeClass('required');
$(email).addClass('required field error');
$(gender).removeClass('required');
$(gender).addClass('required field error');
$(campus).removeClass('required');
$(campus).addClass('required field error');
$(status).removeClass('required');
$(status).addClass('required field error');
$(contractor).removeClass('required');
$(contractor).addClass('required field error');
$(password).removeClass('required');
$(password).addClass('required field error');
}
else if(msg.success)
{
$("#succesful_message").html(msg);
clearInput();
}
}
});
return false;
});
function clearInput() {
$("#add_staff :input").each( function() {
$(this).val('');
});
}
如果有任何信息能为我指明正确的方向,我们将不胜感激,谢谢。我注意到的第一件事是您需要添加以下内容:
$('#add_staff').submit(function(e){
e.preventDefault();
...
}
这样您的表单就不会刷新页面。我注意到的第一件事是您需要添加以下内容:
$('#add_staff').submit(function(e){
e.preventDefault();
...
}
这样你的表单就不会刷新页面。谢谢你的提示,我认为返回值是假的;最后,返回:false;而不是e.preventDefault();在大多数情况下,这是非常糟糕的做法。提供return:false类似于执行e.preventDefault();e、 停止传播();谢谢你的提示,我以为退货是假的;最后,返回:false;而不是e.preventDefault();在大多数情况下,这是非常糟糕的做法。提供return:false类似于执行e.preventDefault();e、 停止传播();