я новичок в ларавеле. я сделал пользовательскую форму входа, используя 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
вам нужно сравнить ответ обратного вызова == "success"
да, я скопировал этот код из моего основного php. я не знаю, как сравнить в контроллере larvel, пожалуйста, помогите
вернуть ответ()->json('1'); как написать и проверить
если вы используете одинарные кавычки, это рассматривается как передача строки без одинарной кавычки или вы создаете массив и передаете
пройти по этому пути return response()->json([ [1] ]);
теперь работает, но если имя пользователя и пароль совпадают, он переходит на страницу test.blade.php, ничего не показывает 404 Not Found
я вызывал так window.location.replace('test.blade.php');
@haridran, вам нужно определить маршруты window.location.replace('dashboard');
Я проверил ваш код. вы должны изменить только действие (функцию) в вашем контроллере, который вы назвали «проверить». пожалуйста, измените на:
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-скрипта не может получить доступ к просмотру файла...
да. я новичок в ajax с laravel