Проверка доступности имени пользователя с помощью AJAX

1

В настоящее время я пытаюсь разработать небольшой веб-сайт на PHP, чтобы проверить свои навыки. Тем не менее, я обнаружил, что я застрял, когда решил реализовать проверку доступности имени пользователя в реальном времени для процесса регистрации, так как мои знания JavaScript несколько базовые.

Прямо сейчас, когда я ввел имя в поле имени пользователя, я получаю только загрузочный образ и ничего больше. Это то, что я сделал:

Моя страница login.php, хранящаяся в папке /views:

<section>
    <div>
        <form action="?action=login" method="post">
            <input type="text" placeholder="username" name="username" id="username" onkeypress ="check()">
            <span id="usernameStatus"></span>
        </form>
    </div>
</section>

Мой файл js, хранящийся в /views/js:

function check () {
    var status = document.getElementById('usernameStatus');
    var u = document.getElementById('username').value;
    if(u != ""){
        status.innerHTML = '<img src="views/img/wait.gif" alt="" height="20" />';
        var hr = new XMLHttpRequest();
        hr.open("POST", "../login.php", true);
        hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

        hr.onreadystatechange = function() {
            if(hr.readyState == 4 && hr.status == 200) {
                status.innerHTML = hr.responseText;
            }
        }

        var v = "checkName="+u;
        hr.send(v);

    }
}

И, наконец, loginController.php хранится в/контроллерах:

    public function run() {
        if(!empty($_POST["checkName"])){
            $name= htmlentities($_POST["checkName"]);
            if(Db::getInstance()->username_ok($name)){
                echo ("<strong>" . $name . "</strong> unavailable");
            }
            else{
                echo ("<strong>" . $name . "</strong> available");
            }
        }
        require_once('views/login.php');
    }

Может ли кто-нибудь объяснить мне, что я сделал неправильно? Благодарю!

  • 0
    Что вызывает ваш JavaScript? У вас есть зарегистрированный слушатель событий в поле ввода?
  • 0
    Вы проверили AJAX op в программе просмотра сети вашего браузера? Посмотрите на параметры запроса, код ответа и текст ответа, чтобы помочь вашей отладке.
Показать ещё 2 комментария
Теги:
model-view-controller

2 ответа

0
Лучший ответ

Я думаю, проблема связана с именами файлов.

С вашего вопроса, я думаю, файловая структура

root
|-- controllers
|   '-- loginController.php
'-- views
    '-- js
        '-- script.js

В вашем JavaScript-коде, который находится в файлах views/js/scriptname.js,

hr.open("POST", "../login.php", true);

запрос отправляется в файл login.php.

Но, как вы уже упоминали, путь к скрипту php на стороне сервера - /controllers/loginController.php.

По мне, код JavaScript должен быть следующим:

hr.open("POST", "controllers/loginController.php", true);
  • 0
    вы были правы насчет этой моей ошибки, однако по какой-то причине, когда я использую мой отладчик браузера, он говорит POST http://localhost/controllers/LoginController.php 404 (Not Found) .
  • 0
    исправлена ошибка 404 путем изменения пути к controllers / loginController.php.
0

вот учебник, который поможет вам, его живое имя пользователя с PHP и jquery.

  • 0
    Благодарю. Я проверю это и попытаюсь адаптировать его к своему коду.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню