Проверка имени пользователя перед отправкой формы - JQUERY / AJAX - PullRequest
1 голос
/ 30 декабря 2011

Я использовал этот пример: http://youhack.me/2010/05/04/username-availability-check-in-registration-form-using-jqueryphp/ для создания формы (переводит пользователя на страницу подтверждения перед добавлением в базу данных - простая часть, которая идет после) ... однако я хотел бы проверить, является ли имя пользователя доступно или нет до отправки формы. Я не могу на всю жизнь понять, что я делаю с этим не так: P

МОЙ jquery / AJAX ниже: (PHP-файл, который он вызывает, работает нормально, мне не нужно его помещать сюда)

$(document).ready(function()
    {
        $(".form").submit(function()
        { 
            var username = $(".userID").val();

            $.ajax({  
                type: "POST",
                url: "id_check.php",  
                data: "userID="+ username,  
                success: function(response){

                    if(response=="NO"){
                        alert("no");    
                    }
                    else if(response=="YES"){   
                        alert("yes");
                    }
                }

            });

            return false; //if i take this line out it submits either way

        });

    });

Я знаю, что php работает, потому что появляется правильное предупреждение, когда имя пользователя взято или нет, но я не могу заставить его отправить форму, когда ответ ДА, без отправки, когда ответ также НЕТ. Я пробовал много разных вещей (в том числе $ (form) .submit () и различные возвращения и т. Д. В выражениях IF), но безрезультатно.

Мне нужно отправить его, когда имя не взято, и НЕ отправлять, когда оно ... любая помощь очень ценится! (я думаю, что я включил всю информацию, необходимую, чтобы потенциально исправить это, ха-ха)

Alan

Ответы [ 2 ]

0 голосов
/ 30 декабря 2011

Возвращаемое значение false не позволяет кнопке отправить, и это также потому, что оператор return false выполняется до того, как ajax завершит свой вызов. Поэтому я думаю, что вам понадобится скрытая кнопка, которую вы будете вызывать, чтобы отправить, когда ответ == "ДА".

0 голосов
/ 30 декабря 2011

Вы пробовали (посмотрите на комментарии):

    $(".form").submit(function(e)
    { 
        var username = $(".userID").val();
        //cache the current form 
        var form = this;
        //check if the event is started by the user or by your success function
        //if it's triggered by the user, check for the username
        if (e.originalEvent !== undefined){
          $.ajax({  
            type: "POST",
            url: "id_check.php",  
            data: "userID="+ username,  
            success: function(response){

                if(response=="NO"){
                    alert("no");    
                }
                else if(response=="YES"){   
                    //submit the form you have cached
                    $(form).submit();
                    alert("yes");
                }
            }

          });

        //This is to prevent the form from submitting when you click the submit button
        return false; //if i take this line out it submits either way
        }


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