Тестирование ответа PHP в Ajax

Я делаю простой механизм регистрации, который хранит имя пользователя и пароль в базе данных MySQL. Как это устроено:

  1. Пользователь вводит свои данные в текстовые поля.
  2. Значения извлекаются и проверяются через скрипт JQuery.
  3. Если проверка пройдена, Ajax-вызов делается в файл PHP, который затем проверяет, было ли имя пользователя уже занято. Если это взято, это делает echo '0', Если нет, то это echo '1' и вставляет значения в базу данных.
  4. Затем Jquery проверяет ответ и выполняет соответствующее действие.

    $.ajax({
    type: "POST",
    url: "register.php",
    data: {usn:us, pwd: pw},
    cache: false,
    success: function(result){
    console.log(result);
    if (result=='1'){
    window.location = "next.php";
    }else{
    errorMessage= "Username taken. <br>";
    $("#regerrormsg").html(errorMessage);
    }
    }
    });
    

PHP:

include 'dbconnect.php';
$us = $_POST["usn"];
$pw = $_POST["pwd"];

$tryus = $conn->query("SELECT Username from users WHERE Username='" . $us . "'");
if ($tryus->num_rows == 0){
echo '1';
$conn->query("INSERT INTO users (ID, Username, Password) VALUES (DEFAULT, '" . $us . "', '" . $pw . "')");
session_start();
$_SESSION["user"] = $us;
}else{
echo '0';
}

Теперь вот странная вещь. Это в значительной степени работает, за исключением одной части. Запрос действительно проверяет, существует ли имя пользователя, и отображает соответствующее значение («0» или «1»). Я проверил это, войдя в выходной файл в файле JavaScript. Я также проверил свою базу данных, и она никогда не хранит дубликата пользователя. Но по какой-то странной причине window.location = "next.php"; никогда не выполняется, даже если значение вывода равно 1. Это всегда идет в блок «остальное».
Есть идеи, почему это происходит?
Благодарю.

1

Решение

Лучший способ проверить ответы бэкэнда — использовать REST Api Client. Почтальон самый популярный, но я предпочитаю Бессонница. Попробуйте, на мой взгляд, это необходимо для разработки интерфейса.

0

Другие решения

Пожалуйста, измените код ниже:

if ($tryus->num_rows == 0){
echo '1';
$conn->query("INSERT INTO users (ID, Username, Password) VALUES (DEFAULT, '" . $us . "', '" . $pw . "')");
session_start();
$_SESSION["user"] = $us;
}else{
echo '0';
}

к этому:

if ($tryus->num_rows == 0){
$conn->query("INSERT INTO users (ID, Username, Password) VALUES (DEFAULT, '" . $us . "', '" . $pw . "')");
echo '1';
}else{
echo '0';
}
exit();

Создайте сессию в переменной в файле next.php.

+ Изменить window.location = "next.php"; в document.location.href="http://your-site-url.com/next.php";

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector