Window.location.replace не работает Laravel ajax

я новичок в ларавеле. я сделал пользовательскую форму входа, используя laravel Ajax. когда введите имя пользователя и пароль и нажмите кнопку входа, он успешно посещает страницу test.blade.php, но страница отображается 404 Не нашел, что пробовал до сих пор, я прикрепил ниже.

test.blade.php

<div class = "container">
    <table width = "100%" height = "100%" border = "0" cellspacing = "0" align = "center">
        <tr>
            <td align = "center" valign = "middle">
                <table class = "table-bordered" width = "350" border = "0" cellpadding = "3" cellspacing = "3" bgcolor = "#FFFFFF">
                    <form name = "frm_login" id = "frm_login">
                    @csrf
                          <tr>
                              <td height = "25" colspan = "2" align = "left" valign = "middle" bgcolor = "#FF9900" class = "style2">
                                  <div align = "center">
                                      <strong>Login</strong>
                                  </div>

                              </td>
                          </tr>

                        <tr>

                            <div id = "err" style = "color: red">


                            </div>

                        </tr>


                        <tr>
                            <td width = "118" align = "left" valign = "middle" class = "style1">Username</td>
                            <td width = "118" align = "left" valign = "middle" class = "style1">
                                <input type = "text" class = "form-control" size = "10px" id = "username" placeholder = "Username" name = "username">
                            </td>

                        </tr>

                        <tr>
                            <td width = "118" align = "left" valign = "middle" class = "style1">Password</td>
                            <td width = "118" align = "left" valign = "middle" class = "style1">
                                <input type = "password" class = "form-control" size = "10px" id = "password" placeholder = "password" name = "password">
                            </td>

                        </tr>

                       

                        <tr>
                            <td colspan = "2" align = "right" valign = "middle" class = "style1">

                                <button type = "button" class = "btn btn-primary" onclick = "login()">Sign In</button>
                                <button type = "button" class = "btn btn-warning" onclick = "reset()">Reset</button>
                                </td>


                        </tr>






                    </form>
                </table>

            </td>


        </tr>


    </table>





</div>


<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
<script src = "//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>




<script>

    function login()
    {
        if ($('#username').val() == "")
        {
            $('#username').parent('td').addClass('has-error');
            return false;
        }
        else if ($('#password').val() == "")
        {
            $('#password').parent('td').addClass('has-error');
            return false;
        }
        else if ($('#utype').val() == "")
        {
            $('#utype').parent('td').addClass('has-error');
            return false;
        }
        var data = $("#frm_login").serialize();

        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')
            }
        });




        $.ajax({
                type : 'POST',
                url: '{{ route('testlogin.check') }}',
                data : data,

            success : function(response)
            {
                console.info(response);
                if (response == 1)
                {
                    window.location.replace('test.blade.php');
                }
                else if (response == 3)
                {
                    $("#err").hide().html("Username or Password or Role Incorrect. Please Check").fadeIn('slow');
                }
            }

        });
    }

</script>

testController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestloginController extends Controller
{
    public function index()
    {
        return view('testlogin');
    }

    public function check(Request $request)
{  
    $user = $request->username;
    $pass  = $request->password;

    if (auth()->attempt(array('name' => $user, 'password' => $pass)))
    {
        return response()->json([ [1] ]);
    } 
    else
     {  
        return response()->json([ [3] ]);
     }  
}

    public function logout(Request $request) 
    {
        Auth::logout();
        $request->session()->flush();
        return redirect()->route('student.login');
    }
}

Маршруты

Route::get('/test','TestloginController@index');
Route::post('/test/check','TestloginController@check')->name('testlogin.check');

Route::get('/test','TestloginController@index')->name('testlogin.login');

да. я новичок в ajax с laravel

hari dran 14.12.2020 08:55

правильный ли запрос ajax

hari dran 14.12.2020 08:59

вам нужно сравнить ответ обратного вызова == "success"

Elangovan Selvaraj 14.12.2020 09:01

да, я скопировал этот код из моего основного php. я не знаю, как сравнить в контроллере larvel, пожалуйста, помогите

hari dran 14.12.2020 09:02

вернуть ответ()->json('1'); как написать и проверить

hari dran 14.12.2020 09:03

если вы используете одинарные кавычки, это рассматривается как передача строки без одинарной кавычки или вы создаете массив и передаете

Elangovan Selvaraj 14.12.2020 09:06

пройти по этому пути return response()->json([ [1] ]);

hari dran 14.12.2020 09:09

теперь работает, но если имя пользователя и пароль совпадают, он переходит на страницу test.blade.php, ничего не показывает 404 Not Found

hari dran 14.12.2020 09:12

я вызывал так window.location.replace('test.blade.php');

hari dran 14.12.2020 09:13

@haridran, вам нужно определить маршруты window.location.replace('dashboard');

Elangovan Selvaraj 14.12.2020 10:02
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
10
1 779
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я проверил ваш код. вы должны изменить только действие (функцию) в вашем контроллере, который вы назвали «проверить». пожалуйста, измените на:

public function check(Request $request)
    {
        $credentials = $request->only('username', 'password');

        if (\Auth::attempt($credentials)) {
            return response()->json([[1]]);
        } else {
            return response()->json([[3]]);
        }
    }

после этого вы должны смотреть

            window.location.replace('test.blade.php');

изменить на

window.location.replace('{{route("your destination route name"}}');

это работает с моей проблемой внутри функции ajax, значение json приходит 1, оно будет перенаправлено test.blade.php, но страница отображается 404 Not Found

hari dran 14.12.2020 09:52

window.location.replace('test.blade.php'); здесь, как вызвать страницу test.blade с сеансом

hari dran 14.12.2020 09:55

window.location.replace('{{route("test.index"}}'); Я написал, что получаю ошибку синтаксиса ошибки, неожиданно ';', ожидая ')' (Вид:

hari dran 14.12.2020 10:03

вы должны перенаправить на URL-адрес или маршрут, например, мой пример java-скрипта не может получить доступ к просмотру файла...

mohammadreza gohari 14.12.2020 10:05

Другие вопросы по теме