【问题标题】:window.location.replace not working Laravel ajaxwindow.location.replace 不工作 Laravel ajax
【发布时间】:2021-03-24 21:01:38
【问题描述】:

我是 laravel 的初学者。我使用 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.log(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>

testContoller

<?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');

【问题讨论】:

  • 是的。我是 laravel 的 ajax 新手
  • ajax请求是否正确
  • 您需要在成功回调响应中进行比较 == "success"
  • 是的,我从我的核心 php.ini 复制了这段代码。我不知道如何在 larvel 控制器中进行比较,请帮忙
  • 返回响应()->json('1');喜欢怎么写和查

标签: php laravel


【解决方案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
  • window.location.replace('test.blade.php');这里如何使用会话调用 test.blade 页面
  • window.location.replace('{{route("test.index"}}'); 我写了类似的错误语法错误,意外';',期待')'(查看:
  • 您必须重定向到 URL 或路由,例如我的示例 java 脚本无法访问查看文件...
猜你喜欢
  • 2023-01-13
  • 2013-10-10
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
  • 2013-02-10
  • 2014-03-01
  • 1970-01-01
  • 2012-06-09
相关资源
最近更新 更多