在ajax成功函数中捕获变量以停止提交表单

时间:2009-10-11 00:34:05

标签: jquery ajax callback

我在此代码中遇到问题。 我想选择是否提交 是否基于ajaxcall的结果形成。

如果我使用return false对其进行硬编码;它停止进入paypal网站。 这就是为什么我希望它依赖于ajax succes函数中的变量集。

这可能在回调中丢失了,所以这就是我寻求帮助的原因。

这是代码:

$("#img_download").click(function(e){

    $("#main_content").find('span').not('#loading').remove();
    loading.fadeIn(1000);
    $("#main_content").load("../../../includes/snip.php #betaalbox", function(){
        var invoerGebruikersnaam = $("#gebruikersnaam");
        var invoerEmail = $("#email");
        loading.hide();

        if($("#uitloggentaxibel").size()!=0){
            //alert('we zijn ingelogd');
            $('#idgebruikerbox').hide();
            ingelogd=1;
        }else{
            invoerEmail.focus();
            //alert('we zijn niet ingelogd');
        }

         $('form#paypalio').submit(function(){ 
            if(invoerGebruikersnaam.attr("value") && invoerEmail.attr("value")){
                alert('is gecheckt, check ook op geldig emailadres');
                //check ook voor een geldig emailadres
                //OK, dan...
                //vergelijk met db gegevens
                gebruikersnaam = invoerGebruikersnaam.attr("value");
                email = invoerEmail.attr("value");
                $.ajax({
                url: "/includes/pdt_paypal.php",
                data: ({gebruikersnaam: gebruikersnaam, actie: "idgebruikercheck", email: email}),
                cache: false,
                type: "POST",
                dataType: "json",
                timeout: 5000,
                success: function(data,textStatus){
                //$('#main_content').html(data.responseText);
                //sla geretourneerde gegevens bij gebruiker op
                identificatie=data.check;
                if(identificatie=="ok"){
                    customstring=email;

                    $('.bericht.idgebruikerfout').html('identificatie was ok').show();
                }else{
                    $('.bericht.idgebruikerfout').html('identificatie heeft gefaald').show();
                    annuleerPayPal="ok";
                }

                }//EINDE success
                    ,error: function(XMLHttpRequest, textStatus, errorThrown) { 
                        if(textStatus == 'timeout') {
                            //doe iets
                        }else if (textStatus == 'error'){
                            //doe iets
                        } 
                    }//EINDE error

                });//EINDE ajax
                //ZOJA, dan...

             }else{

                $('.bericht.idgebruikerfout').html(idfout2).show();
                return false;
             }
             if(annuleerPayPal=="ok"){return false;}     

                //return false;     
        });//EINDE submit
    });//EINDE load

});

编辑,因为

我通过删除设置变量的逻辑来解决它,因为它丢失了。 我最好的猜测是不同的回调返回到不同的上下文。

无论如何,通过更直接,通过在一个上下文(回调)中评估if / else语句块,我只是Instruct提交表单。 $( '形式')提交();

解决

谢谢,理查德

1 个答案:

答案 0 :(得分:3)

在顶部附近添加:

  var SubmitForm = false;

然后在通过验证后添加:

if(identificatie=="ok"){
       SubmitForm = true;  //<--- this part
       customstring=email;

然后返回该变量而不是返回flat true或false;

   return SubmitForm;

快速修改:

我假设你想根据ajax请求返回的内容提交表单,而不是简单地成功。同样的想法适用,你只需要添加:

       SubmitForm = true; 

if(identificatie=="ok"){之前而不是之后,以便在请求成功后立即变为true。