Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的代码会触发多次_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 为什么我的代码会触发多次

Javascript 为什么我的代码会触发多次,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有从$(文档).ready(函数(){)调用的以下内容: $('#file_upload_form').submit(function(){ // show loader [optional line] //if(document.getElementById('upload_frame') == null) { // create iframe $("#upload_list_button").hide();

我有从
$(文档).ready(函数(){
)调用的以下内容:

  $('#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();                        
    //}
  });
$('#文件_上传_表单')。提交(函数(){
//显示加载程序[可选行]
//if(document.getElementById('upload\u frame')==null){
//创建iframe
$(“#上传#列表#按钮”).hide();
$(“#加载#图标#上载#地址”).show();
$('body')。追加('');
$(“#上传_帧”)。在('load',function()上{
$(“#上传#帧”).unbind('load');
if($(this.contents()[0].location.href.match($(this.parent('form').attr('action')){
//显示服务器响应[可选行]
var html_return=$(this.contents().find('html').html();
if(html\u return.indexOf(“Error”)>-1){
$('#server_response').css(“背景色”,“FFDEDE”);
}
如果(html_return.indexOf(“Success”)>-1){
$('sever_response').css(“背景色”,“EEFCED”);
}
$('#server_response').html(html_return);
args={
ajax\u令牌:getAjaxToken(),
客户端:$(“输入[名称=客户端]”).val(),
地址类型:地址类型
}
loadAddressList(args);
$(“#上传#列表#按钮”).show();
$(“#加载#图标#上载#地址”).hide();
}
})
$(this.attr('method','post');
$(this.attr('enctype','multipart/formdata');
$(this.attr('target','upload_frame').submit();
//}
});
我实际上是在尝试使用iframe上传文件(发现异步太难了)


Firebug显示几乎有100个请求被触发。为什么呢?触发的ajax代码是
loadAddressList(args);

提交表单时,代码正在执行,但最后一行代码再次提交表单。

提交表单时,提交处理程序会触发。在提交处理程序内部(代码的最后一行),再次提交表单。这将导致另一个提交处理程序的火灾,这将创建一个无限循环


尝试使用
e.preventDefault()
在提交处理程序的第一行,确保只提交一次表单。

您在正文中添加了一个iframe,完成后是否将其删除?嗯……确实如此!这是一项复制粘贴工作,所以不确定我为什么会错过。哈哈,您可以看到我在开始时注释掉了一些代码
如果(document.getElementById('upload\u frame')==null)
-这个位很重要。