【问题标题】:new user after ajax validation with laravel使用 laravel 进行 ajax 验证后的新用户
【发布时间】: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

【问题讨论】:

    标签: php ajax validation laravel laravel-5.2


    【解决方案1】:

    函数 CreateNewUser 永远不会被调用,因为您在打破范围的函数调用之前返回,并且永远不会调用 $this-&gt;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)
    • 或多或少,我遇到了这个问题,并且令牌的名称也记住在数据库中
    • 很高兴为您提供帮助!
    猜你喜欢
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    相关资源
    最近更新 更多