<form method="post" action="http://127.0.0.1:801/Home/UploadResult" enctype="multipart/form-data" id="form1"><input name="qdctvfile" id="qdctvfile11" type="file" onchange="eventStart()"></form><script type="text/javascript">$("#form1").ajaxForm({beforeSerialize: function () {var filepath = $("#qdctvfile11").val()var extStart = filepath.lastIndexOf(".");var ext = filepath.substring(extStart, filepath.length).toUpperCase();if (ext != ".PNG" && ext != ".JPG") {alert("图片仅支持png,jpg格式");$("#qdctvfile11").val("");return false;}},success: function (data) {alert(data);}});function eventStart(obj) {$("#form1").submit();}注意,代码中的eventStart方法是指在选择文件后,自动提交表单,而ajaxForm表示提交表单为异常方式,success回调方法是指 异步返回表单地址 的返回值。/// <summary>/// MVC模式下跨域访问/// </summary>public class MvcCorsAttribute : ActionFilterAttribute{public override void OnActionExecuting(ActionExecutingContext filterContext){Dictionary<string, string> headers = new Dictionary<string, string>();headers.Add("Access-Control-Allow-Origin", "*");headers.Add("Access-Control-Allow-Methods", "*");foreach (var item in headers.Keys){filterContext.RequestContext.HttpContext.Response.Headers.Add(item, headers[item]);}base.OnActionExecuting(filterContext);}}注意,在生产环境下,我们的 Access-Control-Allow-Origin 应该是指定合法的域名的,*表示对所以网站都开放访问,这是危险的。/// <summary>/// 第三方的服务端/// </summary>/// <param name="name"></param>/// <returns></returns>[HttpPost]public ActionResult UploadResult(){string data = "{"code":"OK","thumpImgUrl":"http://127.0.0.1/images/1.jpg"}";return Redirect("http://localhost:9497/Home/UploadCallback?data=" + data);}/// <summary>/// 可能是服务端来调用它/// </summary>/// <returns></returns>public ActionResult UploadCallback(string data){return Content(data);}有些时候,我们在想一个问题的解决方法时,如果一条路走不通过,可以换换思路,也许会有意外的收获!
以上所述是小编给大家介绍的基于jQuery.form插件实现jQuery跨域异步上传文件的相关内容,希望对大家有所帮助!