我从$(document).ready(function() {
:
$('#file_upload_form').submit(function(){
// show loader [optional line]
//if(document.getElementById('upload_frame') == null) {
// create iframe
$("#upload_list_button").hide();
$("#loading_icon_upload_addresses").show();
$('body').append('<iframe style="display: none" id="upload_frame" name="upload_frame"></iframe>');
$('#upload_frame').on('load',function() {
$("#upload_frame").unbind('load');
if($(this).contents()[0].location.href.match($(this).parent('form').attr('action'))){
// display server response [optional line]
var html_return = $(this).contents().find('html').html();
if ( html_return.indexOf("Error") > -1 ) {
$('#server_response').css("background-color", "#FFDEDE");
}
if ( html_return.indexOf("Success") > -1 ) {
$('#server_response').css("background-color", "#EEFCED");
}
$('#server_response').html(html_return);
args = {
ajax_token : getAjaxToken(),
client : $("input[name=client]").val(),
address_type : address_type
}
loadAddressList(args);
$("#upload_list_button").show();
$("#loading_icon_upload_addresses").hide();
}
})
$(this).attr('method','post');
$(this).attr('enctype','multipart/form-data');
$(this).attr('target','upload_frame').submit();
//}
});
我基本上是尝试使用iframe上传文件来进行上传(发现它太难以进行异步)。
Firebug显示将近100个请求被触发。为什么这样?触发的ajax代码是loadAddressList(args);
答案 0 :(得分:1)
提交表单时正在执行您的代码,但代码的最后一行会再次提交表单。
答案 1 :(得分:1)
提交表单时,提交处理程序将触发。在提交处理程序(代码的最后一行)中,您将再次提交表单。这会引发另一个提交处理程序,这会产生一个无限循环。
尝试在提交处理程序的第一行使用e.preventDefault();
,以确保只提交一次表单。