我有一个表单,将数据提交到数据库,然后提交给谷歌文档。 我正在使用jquery ajax来实现这一目标。 的javascript:
var name ="a";
var company = "b";
var phone = "1";
...
$.ajax({
async: false,
url: "view/templates/includes/abc.php",
//type: 'POST',
//timeout: 10000,
data: {
"name": name,
"company": company,
"phone": phone,
"email": email,
"comments": comments
},
success: function(data) {
//called when successful
alert(data);
//alert('success');
$('#php-code').html(data);
},
error: function(e) {
// alert(e.message);
//called when there is an error
//console.log(e.message);
}
});
return true;
}
abc.php是我将代码插入数据库的代码所在。
现在问题是我不想使用async:false因为我读它应该永远不会被使用,因为它可能导致浏览器挂起并且它破坏了使用ajax的目的。但是,如果我不使用async:false,则在我的ajax响应到来之前提交表单,因此它总是转到错误函数。
如何不使用async:false?
答案 0 :(得分:1)
您可以在提交时调用ajax函数。
您可能希望停止在活动中提交表单(可能会点击按钮)。
在ajax成功方法中,明确提交表单。
(可以使用jQuery - $('#id_of_form').submit()
)
EX。可以按照步骤进行,
$('#id_button_submit').click(function(event){
// this will prevent form to be submitted
event.preventDefault();
// call the function of ajax
serviceCall();
});
在ajax的成功方法
success: function(data) {
$('#id_of_form').submit();
// rest of your code
},
或者jQuery插件http://malsup.com/jquery/form/#ajaxSubmit可能对您有用