2016-02-08 46 views
1

我試圖上傳一個包含多個文件的表單到我的服務器,請求將更正Action,我也得到一些數據,但所有文件都帶有空值。如何防止重定向到表單提交

var file = function(){ 
 
this.submitForm = function() {  
 
    $("#addBrtForm").ajaxSubmit(function (response) { 
 
    if (response === "Barter Uploaded Successfully") { 
 
     alert(response); 
 
     $.mobile.changePage("#p-afterUpload"); 
 
     t.somefunction(); 
 
    } else { 
 
     alert("Try Again!! Barter Not Uploaded"); 
 
    } 
 
}); 
 
}; 
 
}; 
 
hm.files = new file(); 
 

 
//other thing that I tried 
 
$(function(){ 
 
    
 
    $('#addBrtForm').ajaxForm({ 
 
     type: 'POST', 
 
     beforeSubmit: function() { 
 
      return false; 
 
     }, 
 
     success: function (response) { 
 
      return false; 
 
      if (response === "Barter Uploaded Successfully") { 
 
       
 
       alert(response); 
 
       $.mobile.changePage("#p-barter"); 
 
       t.setBarterpageTitle('My Barter'); 
 
      } else { 
 
       alert("Try Again!! Barter Not Uploaded"); 
 
      }   
 
     } 
 
    }); 
 
});
<form method="post" action="http://localhost:xxxx/Mobile/Home/FileUpload" enctype="multipart/form-data" data-ajax="false" id="addBrtForm" name="addBrtForm" > 
 
    <input type="text" name="Title" data-role="none" /> 
 
    <input type="text" name="Description" data-role="none" /> 
 
    <input type="file" name="files" data-role="none" multiple /> 
 
    <input type="file" name="files" data-role="none" multiple /> 
 
    <input type="file" name="files" data-role="none" multiple /> 
 
    <input type="file" name="files" data-role="none" multiple /> 
 
    <input type="file" name="files" data-role="none" multiple /> 
 
    <input type="Submit" name="" value="submit" data-role="none" multiple /> 
 
    <input type="Button" name="" value="submit" data-role="none" multiple onclick="hm.files.submitForm()"/> 
 
    </form>

我控制器上做一些

public ActionResult FileUpload(FormCollection fc, List<HttpPostedFileBase> files) 
    { 
     //some functionilty to save data working perfectely 

     return Json(SuccesMessage, JsonRequestBehavior.AllowGet); 
    } 

*注 - 因爲我使用jQuery Mobile的所以在我的項目沒有意見

+0

你使用什麼插件?它支持上傳文件嗎?另請參閱[這個答案](http://stackoverflow.com/questions/29293637/how-to-append-whole-set-of-model-to-formdata-and-obtain-it-in-mvc/29293681#29293681 ) –

+0

http://malsup.com/jquery/form/#faq - 我使用這個插件,它支持文件上傳,檢查你提供的鏈接,檢查後會更新 –

+0

不熟悉插件,但你需要取消默認提交動作(即添加'return false;'作爲腳本的最後一行)? –

回答

-1

添加idsubmit按鈕。

<input type="Button" name="" id="submit" value="submit" data-role="none" multiple/> 

然後在JavaScript這樣做

  $(function(){ 
      $('#submit').click(function(e){ 
       Do Your stuf here 
       e.preventDefault(); 
      }); 
     } 
+0

我已經在表單標籤的action參數中添加了url(是不夠的) –

0

感謝接受的答案上this post Stephen Muecke的建議我把眼光放在這個問題等。

我did-

  1. 刪除action屬性從點擊代替提交
  2. 使用AJAX作爲參考鏈接給數據發佈我的表單標籤

我編輯的JS如下所示

var formdata = new FormData($('#addBrtForm').get(0)); 
 
      $.ajax({ 
 
       url: "http://localhost:xxxx/Mobile/Home/FileUpload", 
 
       type: 'POST', 
 
       data: formdata, 
 
       processData: false, 
 
       contentType: false, 
 
       dataType: "json", 
 
       success: function (response) { 
 
        if (response === "File Uploaded Successfully") { 
 
         alert(response); 
 
         $.mobile.changePage("#p-afterUpload"); 
 
         t.someFunction(); 
 
        } else { 
 
         alert("Try Again!! File Not Uploaded"); 
 
        } 
 
       }, 
 
       error: function (e) { 
 
        alert("Network error has occurred please try again!"); 
 
       } 
 
      });

改變控制器動作這一點 -

public ActionResult FileUpload(UploadModel fm, List<HttpPostedFileBase> files) 
{ 
    //some functionilty to save data working perfectely 

    return Json(SuccesMessage, JsonRequestBehavior.AllowGet); 
} 

- UploadModel是具有相同的名稱,因爲我曾經在我的模型我的表格