標籤:json .json cti method 後台 利用 優勢 use base
問題描述:
如果用juqery原生的非同步上傳方式,只要如下方法即可
$.ajax({ type: "GET", url: "test.json", data: {username:$("#username").val(), content:$("#content").val()}, dataType: "json", success: function(data){
alert("");
}
})
但是既然用MVC就應該利用它的優勢,所以就用了如下方法
@using (Ajax.BeginForm("Upload", "Index", new AjaxOptions() { HttpMethod = "Post", OnSuccess = "onSuccess" }, new { enctype = "multipart/form-data", id = "uploadForm" }))
{
<input type="hidden" name="id" value="@ViewBag.id">
<input type="file" id="scan" name="image" value="瀏覽.." />
<input type="submit" value="上傳" />
}
在後台用
public ActionResult UpLoad(HttpPostedFileBase file)
{
file = Request.Files["image"];
}
好了在後台能拿到資料完美了,但是問題也來了,非同步非同步,就是是否成功與否都要返回到前台data;
data是返回了,但是卻返回到了Action Upload頁面,而請求的頁面是Index頁面。
然後我馬上想到了mvc有一個內建的非同步js檔案能解決非同步返回請求的頁面 檔案如下:
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
但是這個非同步只是針對<input type=text>類型的,對於 enctype = "multipart/form-data" 類型的背景file就一直取不到
然後經過度娘的協助找到了這個厲害的js檔案,就解決了這個問題哈哈檔案如下:
Jquery.form.js
關於MVC Ajax.BeginForm()非同步上傳檔案的問題