Я реализую простой почтовый запрос и раньше реализовал аналогичный, и все было хорошо, но здесь я получаю эту ошибку. И такое происходит где-то глубоко в консоли, что даже я его сразу не вижу
контроллер
`class OperatorController extends Controller
{
public function index()
{
$ldap_users = LdapUser::all();
return view('pages.home')->with('ldap_users', $ldap_users);
}
public function storeUser(LdapUserStoreRequest $request)
{
try {
$validatedData = $request->validated();
Log::error("тут "`your text` .$validatedData );
$validatedData['full_name'] = $this->generateLogin($validatedData['full_name']);
LdapUser::create($validatedData);
} catch (Exception $e) {
Log::error("Ошибка при создании пользователя: " . $e->getMessage());
return response("Ошибка при создании пользователя", 202);
}
return response('success', 201);
}}`
веб.php
Route::middleware("auth:web")->group(function () {
Route::get('/', [OperatorController::class, 'index'])->name('home');
Route::get('/logout', [AuthController::class, 'logout'])->name('logout');
Route::post('/createUser', [OperatorController::class, 'storeUser'])->name('createUser');
});
js-скрипт
<script>
function createUser2() {
var userPanel = document.getElementById("userPanel");
var formData = new FormData(userPanel);
var xhr = new XMLHttpRequest();
var csrfToken = document.querySelector('meta[name = "csrf-token"]').getAttribute('content');
xhr.open('POST', '{{ route("createUser") }}');
xhr.setRequestHeader('X-CSRF-TOKEN', csrfToken);
xhr.onload = function () {
if (xhr.status === 201) {
alert('Пользователь успешно создан!');
document.getElementById("createUserError").textContent = "";
} else if (xhr.status === 202) {
document.getElementById("createUserError").textContent =
"Ошибка: " +xhr.responseText;
} else if (xhr.status === 200) {
document.getElementById("createUserError").textContent = "Ошибка введённых данных";
}
};
xhr.send(formData);
console.error(xhr.statusText);
}
</script>
лезвие.php
<div id = "createUserModal" class = "modal">
<div class = "create-modal-content">
<h2>Создание нового пользователя
<button class = "btn btn-danger close-button " onclick = "closeCreateUserPanel()">Закрыть</button>
</h2>
<form id = "userPanel">
<div id = "createUserError"></div>
<table>
<tr>
<th>Full Name</th>
<th>Mobile phone</th>
<th>Internal phone</th>
<th>Department</th>
</tr>
<tr>
<td><input type='text' name='full_name' id = "createUserFullName" placeholder='Full Name'></td>
<td><input type='text' name='m_phone' id = "createUserMPhone" placeholder='Mobile phone'></td>
<td><input type='text' name='i_phone' id = "createUserIPhone" placeholder='Internal phone'></td>
<td><input type='text' name='department' id = "createUserDepartment" placeholder='Department'></td>
<td>
<button class='btn btn-primary create-btn' type='button' onclick = "createUser2()">Создать</button>
</td>
</tr>
</table>
</form>
</div>
</div>
всегда получал код 200 и «Ресурс с данным идентификатором не найден»
Я попробовал перенаправить и меняю контроллер и пытаюсь отправить данные по другому, но вижу только это.
в консоли Chrome я вижу это «Ресурс с данным идентификатором не найден» и ничего больше
Я знаю. Вот почему я спросил о том, что происходит в сетевом инструменте, относящемся к этому запросу, а не только в консоли.
Кроме того, получите ли вы ту же ошибку, если протестируете в другом браузере (например, Firefox)? Похоже на специфичную для Chrome ошибку
Log::error("тут "ваш текст` .$validatedData); это "опечатка", которая произошла здесь, на SO, я думаю?
да, ошибка. В логах я просто ничего не вижу. Итак, эти журналы бесполезны, потому что метод не был вызван.
Вы имеете в виду, что в инструменте «Сеть» браузера не отображается HTTP-запрос к вашему маршруту? Можете ли вы использовать отладчик JS и проверить, выполняется ли строка xhr.open('POST'... или нет?
строка выполняется и код движется дальше
Если строка выполняется, она должна зарегистрировать что-то в Сетевом инструменте браузера, относящееся к этому ресурсу. Кроме того, когда вы использовали его в отладчике, вы проверяли и подтверждали ли вы, что URL-адрес, который он пытается открыть, выглядит правильно?
в сети консоли Chrome пишет URL-адрес запроса: 0.0.0.0:8080/createUser Метод запроса: Код состояния POST: 302 Найдено удаленный адрес: 0.0.0.0:8080 Политика реферера: строгое происхождение при перекрестном происхождении
хорошо. Таким образом, он вернул 302 (код перенаправления), а это не тот случай, который вы обрабатываете в написанном вами коде xhr.onload.
Но почему он выдает код перенаправления и даже не вызывает метод из контроллера. Я первый раз вижу код перенаправления и раньше я тоже делал страницу с запросами на публикацию и его там не было.
Что ж, сервер выполняет перенаправление, поэтому, по-видимому, это делает что-то в серверном коде и механизме маршрутизации. Может быть, этот маршрут требует, например, аутентификации? Куда вас перенаправляет 302? Он должен содержать целевой URL-адрес перенаправления в заголовке Location ответа.
Он перенаправляет на ту же страницу
для этого маршрута требуется аутентификация, и я прошел аутентификацию
Ваша аутентификация основана на файлах cookie сеанса? Передаются ли файлы cookie по вашему запросу из браузера на сервер?
it redirects to the same page... вы имеете в виду, что заголовок Location также содержит http://0.0.0.0:8080/createUser в ответе??
Нет / я начинаю со страницы 0.0.0.0:8080 , затем нажимаю и перехожу к /createuser, и меня перенаправляет обратно на 0.0.0.0:8080
мб что-то идет не так, потому что у меня ''' <div class='panel'> <div class='user-info'> @auth {{ auth()->user()->email }} endauth </div> <div class='logout-container'> auth('web') <a href = "{{ маршрут('logout') }}" class='logout-btn'>Выйти</a> if (auth() ->user()->role === 'admin') <a href = "{{route('admin.index') }}" class='admin-btn'>Администрирование</a> endif endauth </ div> </div> ''' в начале лезвия
Это просто создает HTML на вашей странице. Это ничего не делает с вашим запросом XHR.
than click and go to /createuser... вы имеете в виду, что ваш браузер переходит на /createUser как на новую страницу, или вы просто говорите, что запрос XHR отправляется туда? Вы не совсем ясно это описываете. Я спрашиваю вас конкретно о содержимом заголовка Location в ответе на запрос XHR, который сгенерировал 302. Можете ли вы подтвердить, что содержит это конкретное поле заголовка?
местоположение 0.0.0.0:8080
Я понимаю. Спасибо. Что ж, тогда, как я уже сказал, что-то в вашем механизме маршрутизации заставляет его перенаправить обратно от этого действия. Следующее, что нужно проверить, — это файл cookie сеанса, как я упоминал ранее.
моя аутентификация основана на токенах, а не на файлах cookie, насколько я понимаю
В этом случае вам нужно будет отправить токен аутентификации в запросе XHR.
Моя ошибка: я использую сеансы вместо токенов
В этом случае проверьте, правильно ли отправляется файл cookie в запросе XHR.
насколько я понимаю, файлы cookie в порядке



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я глупый и просто назвал параметры по-другому. В правилах запроса я назвал mobile_phone, но в html m_phone и не увидел ошибок в ide
Мы все совершаем ошибки, рад, что вы все равно разобрались! Однако, поскольку это похоже на простую опечатку, лучше удалить этот вопрос и ответ, чтобы избежать ненужных отрицательных голосов. Вопросы обычно закрываются, если они связаны с простой опечаткой, из-за которой вы не сможете опубликовать ненужный ответ, но этот не был закрыт вовремя, и я вижу, что оба уже были отклонены 😔
Как сейчас написано, ваш ответ неясен. Пожалуйста, отредактируйте , чтобы добавить дополнительную информацию, которая поможет другим понять, как это относится к заданному вопросу. Более подробную информацию о том, как писать хорошие ответы, вы можете найти в справочном центре.
Вероятно, вам следует использовать инструмент «Сеть» браузера для отладки этого, если вы еще этого не сделали — неясно, что именно вы рассматривали до сих пор.