JQuery AJAX Call слишком долго или что-то - PullRequest
0 голосов
/ 11 августа 2011

У меня есть форма, которую я хочу убедиться, что адрес электронной почты PayPal действителен перед отправкой. Так что я делаю JQuery отправить вызов, как это

        $('#new_user').submit(function(){
            $.ajax({
                type: 'post',
                url: "/validate_paypal",            
                dataType: 'json',
          data: {email : $('#user_paypal_email').val()},
              success: function( data ) {
                if (data.response["valid"] == false){
                        $('#user_paypal_email').closest('.field').addClass('fieldWithErrors');
                        $('#user_paypal_email').append('<span style="color:#E77776;">This is not a valid email address</span>');
                        return false;
               }else{
                        return true;
                 }
                }
        });

но проблема в том, что этот вызов - секунда, и страница уже обновляется до завершения ajax .... если я поставлю return false в конце вызова, я вижу, что мой json верен, но по какой-то причине как у меня сейчас не получится ... есть идеи как это исправить

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Просто используйте protectDefault () сразу же, когда происходит событие отправки.Затем дождитесь ответа от PayPal и затем вызовите submit () в форме.

$('#new_user').submit(function(e){
   e.preventDefault();
   var form = $(this);  //save reference to form
            $.ajax({
                type: 'post',
                url: "/validate_paypal",            
                dataType: 'json',
                data: {email : $('#user_paypal_email').val()},
                success: function( data ) {
                  if (data.response["valid"] == false){
                        $('#user_paypal_email').closest('.field').addClass('fieldWithErrors');
                        $('#user_paypal_email').append('<span style="color:#E77776;">This is not a valid email address</span>');
                        return false;
               }else{
                        form.unbind('submit');  //remove binding
                        form.submit(); //submit form
                 }
                }
        });
0 голосов
/ 11 августа 2011

Если вы хотите сделать что-то прямо сейчас, вам нужно установить async false в запросе

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