Как установить флаг или индикатор через Ajax в PHP? - PullRequest
0 голосов
/ 10 августа 2010

Я создаю страницу join now. Я беру имя пользователя, пароль, подтверждаю пароль и адрес электронной почты для регистрации. эти входные данные я проверяю через javascript и проверяю, что login name уже существует или нет через ajax. Если он существует, я просто отображаю сообщение, которое this id exists already please chose another one.
Проблема: в том, что если пользователь ввел идентификатор входа в систему, который уже существует, ajax покажет, что он уже существует, но пользователь все равно может нажать на кнопку отправки, потому что в этот раз JavaScript пропустит его, поскольку поле идентификатора входа не пусто. даже я могу проверить это на стороне сервера в процессе обработки базы данных, но I want to set one indicator or flag kind of, until and unless user enters such login id that does not exist he wont be able to submit form. мой код ajax-

...  
xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
            document.getElementById("loginName").innerHTML=xmlhttp.responseText;
            }
          }
...

файл базы данных -

//check in user table  
if($num_rows == 0)
{
    echo "<font color='Green'>Ok, you can chose <b>$logid</b> as Login name.</font>";
}
elseif($num_rows >= 1)
{
echo "<font color='Red'><b>$logid</b> Ligin name has already been taken, Please chose another Login name.</font>";
}

Или как я могу установить в текстовом поле идентификатор входа в систему пустую строку вместе с сообщением об ошибке из ajax? Что-то вроде -

elseif($num_rows >= 1)
{
?>
    <script>
        document.getElementById("newid").value="";
    </script>
<?php
echo "<font color='Red'><b>$logid</b> Ligin name has already been taken, Please  chose another Login name.</font>";
}

Ответы [ 2 ]

0 голосов
/ 10 августа 2010

Я думаю, что это должно сделать
создайте форму, подобную этой

<form name="name1" method="post" action="url" onsubmit="return checkForm(this)">
    <!-- your fields here -->
    <!-- add an hidden field -->
    <input type="hidden" id="hidden1" name="hiddenf" value="0" />
</form>
<script>
function checkForm(form)
{
   return form.hiddenf.value;
}
</script>

Затем в функции обратного вызова ajax

...  
          xmlhttp.onreadystatechange=function()
          {
             if (xmlhttp.readyState==4 && xmlhttp.status==200)
             {
                 document.getElementById("loginName").innerHTML=xmlhttp.responseText;
                 if(xmlhttp.responseText == 'not found') //your exist-id-message here
                    document.getElementById('hidden1').value = 0;
                 else
                    document.getElementById('hidden1').value = 1;
          }
...
0 голосов
/ 10 августа 2010

Вы могли бы сделать что-то вроде отключения формы и последующего ее включения, когда они выбрали доступный логин:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
    document.getElementById("loginName").innerHTML=xmlhttp.responseText;
    document.getElementById('id-of-form').disabled = false;
}

Лично я не стал бы беспокоиться об этом слишком сильно, потому что вы все равно должны перепроверить его при отправке формы, потому что если а) у них отключен JS или б) выберите тот же логин, что и у кого-то еще, кто тоже собирается присоединиться в одно и то же мгновение (состояние гонки) вам нужно убедиться, что они оба не преуспеют. Проверка имени для входа - это полезная функция, которая помогает людям не ненавидеть вас и ваш веб-сайт, заставляя их десятки раз повторно отправлять форму, чтобы найти хороший логин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...