Javascript jquery&;ajax上传图像两次

Javascript jquery&;ajax上传图像两次,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个jQuery脚本,可以通过ajax上传图像,我注意到由于某种原因,它会上传两次图像。在ajax步骤中,它们作为隐藏值嵌入到表单中,然后当有人单击提交表单时,上传过程再次开始,但实际上不应该,因为图像已经在服务器上了。我之所以看到它,是因为我使用了Chrome,当我点击提交时,它在左下角再次显示“上传(19%)…”等。这不是我的脚本,我非常不擅长jQuery,所以我无法找出哪里出了问题。这里有什么明显的东西可以让它在提交时再次上传吗 function media_sync(form_nam

我有一个jQuery脚本,可以通过ajax上传图像,我注意到由于某种原因,它会上传两次图像。在ajax步骤中,它们作为隐藏值嵌入到表单中,然后当有人单击提交表单时,上传过程再次开始,但实际上不应该,因为图像已经在服务器上了。我之所以看到它,是因为我使用了Chrome,当我点击提交时,它在左下角再次显示“上传(19%)…”等。这不是我的脚本,我非常不擅长jQuery,所以我无法找出哪里出了问题。这里有什么明显的东西可以让它在提交时再次上传吗

function media_sync(form_name, media_type, file_path, file_url, file_embed, nb_uploads, max_uploads, upload_id) {
   var radio_buttons = [];
   for (var i = 0; i < form_name.length; i++) {
      if (form_name.elements[i].type == 'radio' && form_name.elements[i].checked == true) {
         radio_buttons[form_name.elements[i].name] = form_name.elements[i].value;
      }
   }

   var jsHttp = new JsHttpRequest();
   var xmlHttp = GetXmlHttpObject();

   if (jsHttp == null) {
      alert("Browser does not support HTTP Request");
      return;
   }

   var media_name = '';
   switch (media_type) {
      case 1:
         media_name = 'ad_image';
         break;
      case 2:
         media_name = 'ad_video';
         break;
      case 3:
         media_name = 'ad_dd';
         break;
   }

   var media_box_name = 'display_media_boxes_' + media_name;

   file_embed = base64Encode(file_embed);
   var url = relative_path + 'file_upload.php';
   var action = url + '?do=add&media_type=' + media_type + '&file_url=' + file_url +
           '&file_embed=' + file_embed + '&nb_uploads=' + nb_uploads + '&upload_id=' + upload_id;

   var thumbnail_div = document.getElementById('display_media_boxes_' + media_name);
   var new_content = document.createElement('div');

   if (file_embed != '') {
      xmlHttp.onreadystatechange = function() {
         if (xmlHttp.readyState == 4) {
            var response = xmlHttp.responseText;

            var results = response.split('|');

            if (results[5] != '') {
               alert(results[5]);
            }
            else {
               new_content.innerHTML = results[3];

               while (new_content.firstChild) {
                  thumbnail_div.appendChild(new_content.firstChild);
               }

               var hidden_div = document.getElementById('hidden_media_boxes');
               var hidden_content = document.createElement('div');
               hidden_content.innerHTML = '<input type="hidden" name="' + results[1] + '[]" id="hidden_' + results[2] + '" value="' + results[4] + '">';

               while (hidden_content.firstChild) {
                  hidden_div.appendChild(hidden_content.firstChild);
               }
               nb_uploads++;
            }

            document.getElementById('item_file_url_' + media_type).value = '';
            document.getElementById('item_file_embed_' + media_type).value = '';

            if (nb_uploads >= max_uploads) {
               document.getElementById('btn_upload_' + media_type).disabled = true;
               document.getElementById('item_file_upload_' + media_type).disabled = true;
               document.getElementById('item_file_url_' + media_type).disabled = true;
               document.getElementById('item_file_embed_' + media_type).disabled = true;
            }
            document.getElementById('nb_uploads_' + media_type).value = nb_uploads;
         }
      };
      xmlHttp.open("POST", action, true);
      xmlHttp.send(null);
   }
   else {
      jQuery.blockUI({ 
          message: $('#uploading_image'), 
          css: { 
              top:  '20%', 
              left: ($(window).width() - 400) /2 + 'px', 
              width: '400px'
          } 
      });


      var image_loading = document.createElement('div');
      image_loading.innerHTML = '';
      thumbnail_div.appendChild(image_loading);

      jsHttp.onreadystatechange = function() {
         if (jsHttp.readyState == 4) {
            var response = jsHttp.responseText;

            var results = response.split('|');

            if (results[5] != '') {
               alert(results[5]);
               thumbnail_div.removeChild(image_loading);
               setTimeout(jQuery.unblockUI, 500);
            }
            else {
               new_content.innerHTML = results[3];

               while (new_content.firstChild) {
                  thumbnail_div.replaceChild(new_content.firstChild, image_loading);
               }
               setTimeout(jQuery.unblockUI, 500);

               var hidden_div = document.getElementById('hidden_media_boxes');
               var hidden_content = document.createElement('div');
               hidden_content.innerHTML = '<input type="hidden" name="' + results[1] + '[]" id="hidden_' + results[2] + '" value="' + results[4] + '">';

               while (hidden_content.firstChild) {
                  hidden_div.appendChild(hidden_content.firstChild);
               }
               nb_uploads++;
            }

            document.getElementById('item_file_url_' + media_type).value = '';
            document.getElementById('item_file_embed_' + media_type).value = '';

            if (nb_uploads >= max_uploads) {
               document.getElementById('btn_upload_' + media_type).disabled = true;
               document.getElementById('item_file_upload_' + media_type).disabled = true;
               document.getElementById('item_file_url_' + media_type).disabled = true;
               document.getElementById('item_file_embed_' + media_type).disabled = true;
            }
            document.getElementById('nb_uploads_' + media_type).value = nb_uploads;

            for (var i = 0; i < form_name.length; i++) {
               if (form_name.elements[i].type == 'radio' && radio_buttons[form_name.elements[i].name] == form_name.elements[i].value) {
                  form_name.elements[i].checked = true;
               }
            }
         }
      };

      jsHttp.open("POST", action, true);
      jsHttp.send({file: file_path});
   }
   jQuery('#upload_form').attr('target', '_self');
}
功能媒体同步(表单名称、媒体类型、文件路径、文件url、文件嵌入、nb上传、最大上传、上传id){
var单选按钮=[];
对于(变量i=0;i=最大上传量){
document.getElementById('btn\u upload\u'+媒体类型)。disabled=true;
document.getElementById('item\u file\u upload\u'+media\u type.).disabled=true;
document.getElementById('item\u file\u url\u'+media\u type.).disabled=true;
document.getElementById('item\u file\u embed\u'+media\u type.).disabled=true;
}
document.getElementById('nb\u uploads\u'+media\u type)。value=nb\u uploads;
}
};
open(“POST”,action,true);
xmlHttp.send(空);
}
否则{
jQuery.blockUI({
信息:$(“#上传#图像”),
css:{
排名前20%,
左:($(窗口).width()-400)/2+'px',
宽度:“400px”
} 
});
var image_load=document.createElement('div');
image_loading.innerHTML='';
缩略图分区附加子项(图像加载);
jsHttp.onreadystatechange=函数(){
if(jsHttp.readyState==4){
var response=jsHttp.responseText;
var results=response.split(“|”);
如果(结果[5]!=“”){
警报(结果[5]);
缩略图分区删除child(图像加载);
setTimeout(jQuery.unbui,500);
}
否则{
new_content.innerHTML=结果[3];
while(新内容.firstChild){
缩略图\u div.replaceChild(新的\u content.firstChild,图像\u加载);
}
setTimeout(jQuery.unbui,500);
var hidden_div=document.getElementById('hidden_media_box');
var hidden_content=document.createElement('div');
hidden_content.innerHTML='';
while(隐藏的内容.firstChild){
隐藏分区appendChild(隐藏内容firstChild);
}
nb_上传++;
}
document.getElementById('item\u file\u url\u'+media\u type)。值='';
document.getElementById('item\u file\u embed\u'+media\u type)。值=“”;
如果(nb_上传>=最大上传量){
document.getElementById('btn\u upload\u'+媒体类型)。disabled=true;
document.getElementById('item\u file\u upload\u'+media\u type.).disabled=true;
document.getElementById('item\u file\u url\u'+media\u type.).disabled=true;
document.getElementById('item\u file\u embed\u'+media\u type.).disabled=true;
}
document.getElementById('nb\u uploads\u'+media\u type)。value=nb\u uploads;
对于(变量i=0;i<form id="upload_form" action="new.php" method="post" enctype="multipart/form-data" name="ad_create_form">

<input class="upload_button" type="file" name="item_file_upload_1" id="item_file_upload_1"
         onchange="media_sync(ad_create_form, 1, 
         this.form.item_file_upload_1, 
         document.getElementById('item_file_url_1').value, 
         document.getElementById('item_file_embed_1').value, 
         document.getElementById('nb_uploads_1').value, 
         5, 
         '000000015');"  />

<input name="finish" id="finish" value="Add" type="submit" class="btn">

</form>