【问题标题】:How to solve redirect to undefiend route laravel?如何解决重定向到未定义的路由laravel?
【发布时间】:2023-03-15 05:20:01
【问题描述】:

我正在使用 Laravel 8,并且我正在使用内置的 Auth 模块。我正在使用 ajax 请求使用移动设备登录。当用户登录和页面重定向时,我得到错误/未定义的路由。我附上错误的屏幕截图。 我的ajax代码是,

$.ajax({
            type: "POST",
            url: "/login",
            headers:
                {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                },
            data: {
                'mobile' : user.phoneNumber
            },
            success: function (response){
                if (response.status === true){
                    // console.log('here')
                    // debugger
                    // window.location.reload();
                }
                window.location = response.url;
            }
        });

我的控制器是,在这里我检查用户是否存在登录它,如果不存在则重新加载,然后创建新的并重定向到仪表板。如果用户不存在它工作正常如果用户存在我面临的问题

public function login(Request $request)
{
    // Check validation
    $this->validate($request, [
        'mobile' => 'required|regex:/[0-9]{10}/',
    ]);

    // Get user record
    $user = User::where('mobile', $request->mobile)->first();

    if($user){
        // Check Condition Mobile No. Found or Not
        if($request->mobile != $user->mobile) {
            return response()->json(
                [
                    'status' => false,
                    'message' => 'Your mobile number not match in our system..!!'
                ], Response::HTTP_OK
            );
        }

        // Set Auth Details
        Auth::login($user);

        return \response()->json(
            [
                'status' => true,
                'message' => 'Login Successfully'
            ], Response::HTTP_OK
        );
    }else{
        Cookie::queue('otpVerified', true);
        Session::put('mobile',$request->mobile);
        return response()->json(
            [
                'status' => false,
                'message' => 'User Not Exist',
                'url' => route('register')
            ], Response::HTTP_OK
        );
    }

}

我的路线文件是,

Route::get('language/{key}', [SwitchLanguageController::class, 'switchLanguage'])->name('language');


Route::get('register', [RegisterController::class, 'showRegistrationForm'])->name('register')->middleware(['otpVerify']);

Auth::routes();
Route::group(['middleware' => 'auth'], function (){
Route::get('/404', [\App\Http\Controllers\ErrorController::class, 'notFound'])->name('404');
Route::get('/', [\App\Http\Controllers\Dashboard\DashboardController::class, 'index'])->name('dashboard');
});

我该如何解决这个问题。谢谢

【问题讨论】:

    标签: jquery ajax laravel


    【解决方案1】:

    登录成功后需要发送url

     return \response()->json(
                [
                    'status' => true,
                    'message' => 'Login Successfully'
                    'url' => url('/') // add this whatever you want
                ], Response::HTTP_OK
            );
    

    并在 java 脚本中添加一项检查

    if (response.url){
       window.location = response.url;                    
    }
                    
    

    【讨论】:

    猜你喜欢
    • 2017-05-03
    • 2013-09-19
    • 2017-05-15
    • 2021-07-19
    • 2020-05-26
    • 1970-01-01
    • 2017-06-19
    • 2021-04-26
    • 1970-01-01
    相关资源
    最近更新 更多