Ajax.BeginForm 异步上传附件 替代方案
一:问题描述
含有文件信息表单内容,想通过异步上传到服务器,但是使用Ajax.BeginForm上传时,后台无法获取文件信息
二:解决方案
通过 $.ajaxFileUpload 可以实现文件及文本内容上传到服务器的需求, 但是需要引入ajaxfileupload.js文件
三:注意事项
(1):
//表单文本内容,
var data = { RealName: RealName1, Telephone: Telephone1, FlightNumber: FlightNumber1, FlightDate: FlightDate1, ComplaintContent: ComplaintContent1 };
$.ajaxFileUpload({
method: "POST",
url: "/controller/action",//需要链接到服务器地址
secureuri: true,
fileElementId: 'id_ComplaintsPicture',//文件选择框的id属性(也就是type="file"的input的id属性,并不需要把文件值写入到data中)
data: data,//$("#form_2").serialize(),//此写法,只上传文件还可以,文件加文本内容上传无效
success: function (data) {
//上传成功之后的操作
var obj = $.parseJSON(data);//返回值形式需要在 ajaxFileUpload.js文件中修改一下,因为它对你原生的后台返回值进行了修饰,这里我的后台返回值形式为{"result": "0","msg": "返回内容"}
if (obj.result == "0") {
if (obj.msg) {
alert(obj.msg);
} else {
alert("失败!");
}
$("#sub_btn").attr("disabled", false);//id为提交按钮(type="button")
} else {
alert("成功!");
window.location.reload();
}
}, error: function (ret) {
//上传失败之后的操作
alert("网络错误!请重试!");
}
});
(2) ajaxFileUpload.js 文件修改 位置
uploadHttpData 函数的最后返回值修改成 return r.responseText;
(3 ajaxFileUpload.js 文件的 handleError 可能因为你引用的jquery版本的问题而报错“函数不存在"
解决方法:
                 在ajaxFileUpload.js 文件中加入以下代码
    handleError: function (s, xhr, status, e) {
        // If a local callback was specified, fire it
        if (s.error) {
            s.error.call(s.context || s, xhr, status, e);
        }
        // Fire the global callback
        if (s.global) {
            (s.context ? jQuery(s.context) : jQuery.event).trigger("ajaxError", [xhr, s, e]);
        }
    }
四 后台接收方式 .net
public string complaint(HttpPostedFileBase[] ComplaintsPicture)
这里就不介绍如何接收上传的文本框内容了,注意ComplaintsPicture就是type="file"的input ,它的name名称,上面代码表示可以接收多个文件
Ajax.BeginForm 异步上传附件 替代方案的更多相关文章
- MVC 5.0(or5.0↓)  Ajax.BeginForm 异步上传附件问题,答案是不能的!
		MVC 5.0(or5.0↓) Ajax.BeginForm 异步上传附件问题,答案是不能的! (请注意我这里说的异步!) 来看一下下面这段一步提交file的代码 //前台 .cshtml 文件 & ... 
- 关于MVC Ajax.BeginForm()异步上传文件的问题
		问题描述: 如果用juqery原生的异步上传方式,只要如下方法即可 $.ajax({ type: "GET", url: "test.json", data: ... 
- 文件的上传(表单上传和ajax文件异步上传)
		项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举的主要对于小文件上传的处理! 资源下载: 一. ... 
- 普通文件的上传(表单上传和ajax文件异步上传)
		一.表单上传: html客户端部分: <form action="upload.ashx" method="post" enctype="mul ... 
- 文件的上传(1)(表单上传和ajax文件异步上传)
		文件的上传(表单上传和ajax文件异步上传) 项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举 ... 
- jquery 通过ajax FormData 对象上传附件
		之前上传附件都是用插件,或者用form表单体检(这个是很久以前的方式了),今天突发奇想,自己来实现附件上传,具体实现如下 html: <div> 流程图: <input id=& ... 
- 使用FormData实现ajax文件异步上传
		1.传统的web开发文件上传一般是基于form表单的文件上传,同步的方式,用户体验差,可控性也差 2.异步上传的实现 有以下方式 2.1 借助浏览器插件 一般需要安装一些类似flash的插件 这种方 ... 
- Ajax图片异步上传并回显
		1.jsp页面 <td width="20%" class="pn-flabel pn-flabel-h"></td> <td w ... 
- ajaxfileupload异步上传附件添加參数的方法
		1.js文件 // JavaScript Document jQuery.extend({ createUploadIframe: function(id, uri) { //create frame ... 
随机推荐
- re模块 | Python 3.5
			https://docs.python.org/3/library/re.html http://www.cnblogs.com/PythonHome/archive/2011/11/19/22554 ... 
- Sipdroid实现SIP(三): 消息接收处理
			I. 注册回调 RegisterAgent类 在TransactionClient Fail/Success的回调中, 调用RegisterAgentListener的Register Fail/Su ... 
- umount: /home: device is busy
			转自:umount: /home: device is busy 取消挂载/home时出现umount: /home: device is busy,原因是因为有程序在使用/home目录,我们可以使用 ... 
- 使用python修改QQ密保(脚本)
			一.基于以下目的: 1.为了增加对Http协议理解能力,对QQ密保修改的请求进行了分析 2.为了锻炼python的编写能力 3.对web综合知识的理解 花了点时间写了这个脚本,下面介绍脚本的过程 二. ... 
- Java面试题及答案(基础122道,编码19道)
			JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ... 
- IE678进入混杂模式
			<!-- 加载公共头部 --> <include file="Public/header" /> 当你在模板页的最上方加注释的说明时,在IE低版本中打开会进 ... 
- 【微服务轻量化容器技术相关】同事分享的Docker学习汇总
			还没时间去练习: Docker commands: docker images (list all image on this host) docker ps -a ( list all contai ... 
- Jsp中out.println()与System.out.println()的区别
			第一次上Web实验课时咱写了一个jsp程序: <% System.out.println("Hello The World"); %> 然后放在浏览器下运行,结果是这样 ... 
- jQuery的9中构造函数
			// 接受一个字符串,其中包含了用于匹配元素集合的 CSS 选择器 jQuery([selector,[context]]) // 传入单个 DOM jQuery(element) // 传入 DOM ... 
- C#中使用like和in参数传值
			like 参数string strSql = "select * from Person.Address where City like '%'+ @add + '%'";SqlP ... 
