php - window.location.replace 不工作 Laravel ajax
问题描述
我是laravel的初学者。我使用 laravel Ajax 制作了自定义登录表单。当输入用户名和密码并单击登录按钮时,它成功访问 test.blade.php 页面,但页面显示 404 Not Found 到目前为止我附在下面的内容。
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>
测试控制器
<?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');
解决方案
我检查了你的代码。您必须仅更改控制器中称为“检查”的操作(功能)。请更改为:
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"}}');
推荐阅读
- jupyter-notebook - 为什么我会收到错误消息:TypeError:'str' 和 'int' 的实例之间不支持'<='?
- python - 有条件地将数据拆分为训练和测试(Pandas)
- python - 如何在 Keras 中裁剪一个张量,每个子张量都有不同的裁剪值?
- php - 如何排除输出错误日志中生成的服务器信息
- sql-server - MySQLServer:检查组中是否存在条件,然后标记整个组
- html - 单页应用程序中的图像问题
- java - 使用 GridBagLayout 时没有出现画布
- linux - 无法从 bash 脚本中保存历史记录
- json - 对于各种版本的 PostgreSQL,使用 JSON 进行奇怪的不同工作
- python - 将具有重复键的 ImmutableMultiDict 转换为列表或字典列表