2012-12-29 57 views
0

不知道是怎麼回事。我試圖通過AJAX從index.html文件,該文件中,術語運行POST到upload.php然後返回文件的短網址的代碼對用戶上傳用戶文件。明確的jQuery Ajax和隱藏的div對象

在我的情況下,一旦用戶上傳文件,它會給出鏈接,然後如果他上傳另一個沒有完整頁面的文件 - 通過F5刷新,腳本將重新上傳前一個文件,並重新創建另一個短文件,前一個文件的代碼和新文件的新短代碼

更不用說,由於某些原因,一旦新文件上傳後實際的div與正在返回給用戶的鏈接不會消失,因此用戶獲取代碼舊文件和新文件的代碼,我不完全想要。

一旦文件上傳完成,POST應該不再有它,並且一旦用戶上傳新文件,div應該只對新文件具有短代碼,但不具有帶有2個不同代碼的2個div到舊的新文件。

這裏是jQuery代碼

(function() { 
    var input = document.getElementById("images"), 
     formdata = false; 

    function showUploadedItem (source) { 
     var list = document.getElementById("image-list"), 
      li = document.createElement("li"), 
      img = document.createElement("img"); 
      a = document.createElement("a"); 
     img.src = source; 
     li.appendChild(img); 
     list.appendChild(li); 
     a.href = source; 
    } 

    if (window.FormData) { 
     formdata = new FormData(); 
     document.getElementById("btn").style.display = "none"; 
    } 

    input.addEventListener("change", function (evt) { 
     document.getElementById("response").innerHTML = "<div class='uploading'></div>" 
     var i = 0, len = this.files.length, img, reader, file; 

     for (; i < len; i++) { 
      file = this.files[i]; 

      if (!!file.type.match(/image.*/)) { 
       if (window.FileReader) { 
        reader = new FileReader(); 
        reader.onloadend = function (e) { 
         showUploadedItem(e.target.result, file.fileName); 
        }; 
        reader.readAsDataURL(file); 
       } 
       if (formdata) { 
        formdata.append("images[]", file); 
       } 
      } 
     } 

     if (formdata) { 
      $.ajax({ 
       url: "upload.php", 
       type: "POST", 
       data: formdata, 
       processData: false, 
       contentType: false, 
       success: function (res) { 
        document.getElementById("response").innerHTML = res;      
       } 
      }); 
     } 
    }, false); 
}()); 

而且你可以在測試現場:cyogen.com嘗試上傳一個文件,然後另一個你短鏈接後,然後你會明白我的意思。

+0

是文件實際上上傳到服務器?由於Ajax無法直接處理文件上傳,因此您不得不使用iframe或類似的東西來進行文件上載,而無需刷新頁面。 – SISYN

+0

這些文件被推通過POST方法,並從與移動多數民衆贊成被通過AJAX表單提交的文件中有自己的upload.php的交易,以upload.php的。 –

+1

爲什麼在jQuery環境中使用'document.getElementById'東西? – moonwave99

回答

1

,我訪問了,你在你的問題有網址,我注意到在您的形式input實際上使multiple選項,allows multiple files to be uploaded,我認爲你需要,如果你只需要一個文件來刪除此選項,每次上傳。

+0

好的多行被刪除。然而嘗試上傳一個圖片,然後上傳下一個,什麼情況是,您將獲得2個鏈接到同一個文件的第一個文件是精確的,其重新上傳。更多的文件,你添加更多的新鏈接,你會得到作爲你上傳的舊文件正在重新上傳,不應該發生 –