使用 laravel 进行 ajax 验证后的新用户
Posted
技术标签:
【中文标题】使用 laravel 进行 ajax 验证后的新用户【英文标题】:new user after ajax validation with laravel 【发布时间】:2016-10-15 22:53:50 【问题描述】:我想在验证用 ajax 发送的数据后做一个记录。这个想法是在没有错误的情况下运行函数 CreateNewUser,但不将数据存储在数据库中。会这样吗?
谢谢。
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Validator;
use App\Http\Controllers\Controller;
use App\Http\Requests;
use App\Modals\NewUser;
class UserController extends Controller
public function index()
return view('home');
public function NewUser(Request $request)
$validator= Validator::make($request->all(),[
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:8|same:cpassword',
'cpassword'=> 'required',
]);
if($validator->fails())
return response()->json([
'success' => false,
'error' => $validator->errors()->toArray()
]);
else
return response()->json(['success' => true ]);
$this->CreateNewUser($request);
private function CreateNewUser(Request $requestt)
$user = new NewUser;
$user->name = $requestt->name;
$user->email = $requestt->email;
$user->passwosrd = $requestt->password;
$user->rememberToken = $requestt->_token;
$user->save();
型号:
<?php
namespace App\Modals;
use Illuminate\Database\Eloquent\Model;
class NewUser extends Model
protected $table = 'users';
js:
function send(event)
event.preventDefault();
$.ajax(
type: 'post',
url: userAjax,
dataType: 'json',
data:
name: $('#name').val(),
email: $('#correo').val(),
password: $('#password').val(),
cpassword: $('#cpassword').val(),
_token: $('#new-user').attr('data-token')
,
beforeSend: function()
$("#nameError").fadeOut();
$("#emailError").fadeOut();
$("#passwordError").fadeOut();
$("#cpasswordError").fadeOut();
,
success: function(data)
if(!data.success)
console.log(data);
if(typeof data.error.name !== 'undefined')
$('#name').css('border-color', 'red');
$('#nameError').fadeIn(10, function ()
$("#nameError").html(data.error.name);
)
if(typeof data.error.email !== 'undefined')
$('#correo').css('border-color', 'red');
$('#emailError').fadeIn(10, function ()
$("#emailError").html(data.error.email);
)
if(typeof data.error.password !== 'undefined')
$('#password').css('border-color', 'red');
$('#passwordError').fadeIn(10, function ()
$("#passwordError").html(data.error.password[0]);
)
if(typeof data.error.cpassword !== 'undefined')
$('#cpassword').css('border-color', 'red');
$('#cpasswordError').fadeIn(10, function ()
$("#cpasswordError").html(data.error.cpassword);
)
else
console.log(data);
$('#Register').modal('hide');
$("#header").replaceWith($('#header'));
,
error: function()
);
错误:
console.log(data):
jquery.min.js:4
POST http://localhost:8000/NewUser 500 (Internal Server Error)
send @ jquery.min.js:4
ajax @ jquery.min.js:4
send @ scripts.js:5on
click @ (index):158
【问题讨论】:
【参考方案1】:函数 CreateNewUser 永远不会被调用,因为您在打破范围的函数调用之前返回,并且永远不会调用 $this->CreateNewUser($request);
。
public function NewUser(Request $request)
$validator= Validator::make($request->all(),[
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:8|same:cpassword',
'cpassword'=> 'required',
]);
if($validator->fails())
return response()->json([
'success' => false,
'error' => $validator->errors()->toArray()
]);
else
return response()->json(['success' => true ]);
$this->CreateNewUser($request);
为了让它工作,将 else 代码更改为
else
$this->CreateNewUser($request);
【讨论】:
您好,我更改了代码并保持不变。 你现在收到这个错误了吗POST http://localhost:8000/NewUser 500 (Internal Server Error)
或多或少,我遇到了这个问题,并且令牌的名称也记住在数据库中
很高兴为您提供帮助!以上是关于使用 laravel 进行 ajax 验证后的新用户的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 和 Datatables:Ajax 数据不使用来自 html 选择的新 ajax 参数刷新表
使用ajax从控制器调用函数的新路由或其他方式? Laravel 5.2,阿贾克斯
Laravel AJAX Request Post 错误代码:使用 laravel auth 登录时会话 ID 更改后的 419