问题在于:
这完全是关于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();
}
});
}