現在我在一個頁面上有多個表單,我想要刪除它。所以目前我正在這樣做。Ajax風格上傳等同於XmlHttpRequest文件上傳到MVC控制器?通過ajax上傳到MVC控制器解決了
JAVASCRIPT
$("button[id$='uploadfile']").click(function (evt) {
//////////////////////////////////////////////////////
// This code block works
alert("upload file");
var file1 = $('#csvIdentifierFileBase').val();
var formData = new FormData();
var opmlFile = $('#csvIdentifierFileBase')[0];
formData.append("opmlFile", opmlFile.files[0]);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'alt/Import');
xhr.send(formData);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText);
}
};
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
// This code block does not
$.ajax({
type: 'POST',
url: 'alt/Import',
data: formData,
enctype: 'multipart/form-data',
//cache: false,
//contentType: false,
//processData: false,
success: function (result) {
alert(result.success);
},
error: function (a, b, c) {
alert("An error has occurred.");
}
});
HTML
<div class="col-md-12">
<input type="file" name="csvIdentifierFileBase" id="csvIdentifierFileBase"/>
<button id="uploadfile" name="action" value="Import" >Import</button>
</div>
控制器
[System.Web.Http.HttpPost]
public ActionResult Import()//HttpPostedFileBase csvIdentifierFileBase)
{
HttpResponseMessage result = null;
HttpPostedFileBase file = Request.Files[0]; //Uploaded file
}
在不改變任何東西BESI des javscript調用這個控制器方法,並使用XmlHttpRequest工作正常,有沒有辦法切換到jquery/ajax風格的調用,所以我不依賴於XmlHttpRequest對象,仍然有調用控制器?我正在尋找一個本地解決方案,而不是另一種類型的插件......這可能嗎? 也無法將輸入和按鈕封裝在AJAX.BeginForm標記中,因爲我試圖消除一個頁面上的表單數量。
我剛剛發佈了答案http://stackoverflow.com/questions/23007332/how-to-upload-file-via-mvc4-and-get-json-response/23008287#23008287也看到這個http:///stackoverflow.com/questions/19042116/ajax-beginform-in-mvc-to-upload-files/19044689#19044689 –
我不能使用Ajax.beginform,因爲我最終會得到一個表單內的表單,不起作用。這就是爲什麼我在沒有表單標籤的情況下進行上述操作。我需要能夠在沒有形式標籤的情況下做你在該帖子上做的Ashwini。 – DRobertE