ajax调用/提交表单在第一次点击时无法使用Internet Explorer

时间:2015-01-28 13:34:25

标签: jquery ajax events click submit

问题在于:

这完全是关于PDF生成的。要生成PDF,我使用mpdf lib。哪个工作正常。这个想法是: 当用户尝试提交表单时,函数获取所有字段,使用填充字段构建PDF,返回创建的pdf文件的URL,将其放入当前表单中的隐藏字段,然后提交表单(与新的隐藏领域)。 (因此,一旦提交,用户就可以下载pdf文件)

On FireFox:一切正常

在Internet Explorer上(此处为10): 单击提交按钮后,它会先触发" onclick"功能

控制台日志:

            - button clicked
            - No Errors
            - Not generated yet
            - ajax call

并且坚持住我直到再次点击按钮(没有页面刷新,只需点击)!

第二次点击,控制台日志:

            - button clicked
            - no errors
            - not generated yet
            - ajax call
            - Error : [object Object] -  - {"readyState":4,"responseText":"","status":500,"statusText":"Internal Server Error"}

只有在我第二次点击之前等了很长时间才会出现此错误。如果我在第一秒后的第一秒内点击,我没有这个错误。

            - button clicked
            - no errors
            - not generated yet
            - ajax call
            - function success
            - called back
            - button clicked
            - no errors
            - generated!

在这一点上,表格被提交,一切都好。

为什么它需要点击2次按钮...为什么ajax第一次失败而不是第二次...... :(

以下是代码:

$(document).ready(function(){
    generated = false;
    errors = true;
    //somewhere in the code, when all fields are filled errors become false... (not important)
});

$("body").on("click","#submitButton",function(event){
    var myData = "test";
    //myData is setted here, it contains some form fields data...
    console.log("button clicked");
    if(errors){
            console.log("errors somewhere");
            event.preventDefault();
    }else{
            console.log("no errors");
            if(generated == false){
                    event.preventDefault();
                    console.log("not generated yet");
                    generatePdf(myData,function(){
                            console.log("called back function");
                            $("#myForm").submit();
                    });
            }else{
                    console.log("already generated");
                    $("#myForm").submit();
            }
    }
});

function generatePdf(myData,callback){
    console.log("ajax call");
    $.ajax({
            type : "POST",
            url : "./myPdfGenerator.php",
            data : {"myData":myData},
            dataType : "json",
            error : function(response){
                    console.log("error : "+response+" - "+response.responseText+" - "+JSON.stringify(response));
            },
            success : function(response){
                    console.log("function success");
                    generated = true;
                    callback();
            }
    });
}

0 个答案:

没有答案