2017-06-09 10 views
2

私はAjax画像アップロードのためにformDataを使用しています。初めてアップロードしたときに送信し、再び画像をサーバーに投稿した投稿ボタンをクリックすると、formDataは消去されません。javascriptを使用してformData()をクリア/リセットする方法は?

マイコード

$("#postsubmitimage").click(function() { 
       var formData = new FormData(); 
       for (var i = 0; i < files.length; i++) { 
        if (files[i].type.indexOf('image/') === 0) { 
         formData.append("files", files[i]); 
        } 
       } 
        $.ajax({ 
         type: "POST", 
         url: '/Ajax/Fileupload/', 
         data: formData, 
         dataType: 'json', 
         contentType: false, 
         processData: false, 
         success: function (json) { 
          $('#textpostimage').val(''); 
         } 
        }); 
      }) 
+0

あなたは毎回** formData **を初期化しました。したがって、formDataは明らかです。 **ファイルの長さ**を確認してください。画像を送信した後にクリアされるかどうか。 – balachandar

+0

フォームを再度送信する前に、フォームを空にします。このフォームは、このformData.empty(); forloopの前に – whoami

答えて

1

私はあなたのfiles変数がAjaxの提出後にクリアされていないため、この問題が発生したと思います。クリックハンドラでは、空のFormDataオブジェクトを実際に作成しますが、そのオブジェクトには、filesの古い参照が書き込まれます。これは明らかにはっきりしません。私はあなたがからの値でfilesを移入何時かわからない私はあなたが$('#myForm').get(0).reset()

を行うことができ、全体のフォームをクリアするには成功したAjaxの完了

success: function (json) { 
    // Supposing #textpostimage is your file input, you are already clearing it 
    $('#textpostimage').val(''); 
    // Also clear your "files" reference 
    files = []; 
} 

後にいくつかのクリーンアップを行っていることをお勧め

#textpostimageがありますが、複数のフォーム提出をしたい場合は、ページの読み込みだけでなく、

0

は、あなたがこのようにそれをやってみましたがありますか?

var formData = new FormData($('<form></form>'));

関連する問題