我可以在单击表单提交按钮时调用AJAX请求,但如果页面由于表单提交而重新加载/重定向,那么AJAX请求是否仍然完成?我问这个,所以我可以做一些事情,比如提交表格时通过AJAX上传文件。
我很确定我无法获得AJAX调用的输出,但我可能错了吗?
答案 0 :(得分:2)
这是可能的,但无法保证在您离开页面时请求已完成。如果您通过AJAX提交表单并且还想提交文件,您可以考虑将文件上载放在一个完全独立的表单标签中,然后在AJAX调用成功后触发表单提交。例如:
<!-- First form with your data -->
<form action="/your/url/here" method="post" id="form1">
<input type="text" name="title" />
<input type="submit" value="Save" />
</form>
<!-- Second form with your file -->
<form action="/uploadfile" method="post" id="form2" enctype="multipart/form-data">
<input type="file" name="fileupload" />
</form>
然后在Javascript中(为了简洁起见使用jQuery示例,请注意我还没有测试过这段代码):
$('#form1').bind('submit', function() {
$.ajax({
url: $(this).attr('action'),
data: $(this).serialize(),
type: 'post',
success: function() {
$('#form2').submit();
}
});
return false;
});