Ajax如何实现表单异步上传文件
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍Ajax如何实现表单异步上传文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.起因做前台页面时,需要调用WebAPI的Post请求,发送一些字段和文件(相当
千家信息网最后更新 2026年10月31日Ajax如何实现表单异步上传文件
这篇文章主要介绍Ajax如何实现表单异步上传文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1.起因
做前台页面时,需要调用WebAPI的Post请求,发送一些字段和文件(相当于把表单通过ajax异步发送出去,得到返回结果),然后得到返回值判断是否成功。
2.尝试
先是尝试了一下 "jQuery Form Plugin" ,这玩意就是的巨大的坑,实现他和jquery1.9.2兼容性就不是太好,好不容易把$.browser的问题解决了,发现用他上传文件得不到返回值。
$("#view").submit($("#view").ajaxSubmit({type: "post",url: "../api/Article/Add",dataType: "json",success: function (msg) {console.log(msg);},error: function (msg) {$("#resultBox").html("连接服务器失败");console.log(msg);}}));比如上面的代码,不过怎么配置,只要上传了文件,success里面返回的msg一定是null(chromium浏览器下),但实际是有返回值的,而且没有文件时也是正常的。更可怕的是IE/EDGE下提示下载那个Json返回值。
翻了一下jquery.form.js的源代码,发现他是用Iframe实现的伪Ajax,不清真,Pass!
// are there files to upload?var files = $('input:file', this).fieldValue();var found = false;for (var j=0; j < files.length; j++)if (files[j]) found = true;if (options.iframe || found) // options.iframe allows user to force iframe modefileUpload();else$.ajax(options);这是有无文件时,分别调用2个不同的函数。
3.解决方案
经过多反调查,发现xhr(XMLHttpRequest)是个好东西。经过测试主流浏览器和手机浏览器都支持这个东西。下面介绍一下在jquery/zepto的ajax 获取原生XMLHttpRequest 对象上传表单(文件)的方法。参考文章:https://www.jb51.net/article/91267.htm
function AjaxForm(formID, options) {var form = $(formID);//将form对象直接作为参数 new FormData对象var formData = new FormData(form[0]);$("input[type='file']").forEach(function (item, i) {//获取file对象 即相当于可以直接post的$_FILES数据var domFile = $(item)[0].files[0];//追加file 对象formData.append('file', domFile);})if (!options)options = {};options.url = options.url ? options.url : form.attr("action");options.type = options.type ? options.type : form.attr("method");options.data = formData;options.processData = false; // tell jQuery not to process the dataoptions.contentType = false; // tell jQuery not to set contentTypeoptions.xhr = options.xhr ? options.xhr : function () {//这是关键 获取原生的xhr对象 做以前做的所有事情var xhr = $.ajaxSettings.xhr();xhr.upload.onload = function () {console.log("onload");}xhr.upload.onprogress = function (ev) {if (ev.lengthComputable) {var percent = 100 * ev.loaded / ev.total;console.log(percent, ev)}}return xhr;};options.success = options.success ? options.success : function (data) {alert(data)};$.ajax(options);}//调用$("#sub").click(function (e) {AjaxForm("#myForm");});以上是"Ajax如何实现表单异步上传文件"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
文件
对象
表单
浏览器
浏览
东西
内容
篇文章
这是
参考
尝试
不同
可怕
巨大
主流
事情
代码
价值
关键
兴趣
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网高科技
中关村互联网 科技集团
港股互联网科技股
互联网金融 科技
金融科技与互联网金融
碳银互联网科技
壹账通互联网科技
有木互联网科技
互联网科技寓意
随着互联网科技发展
厦门比较好的科技互联网公司
青岛科技大学互联网大赛研究生
互联网行业科技股
互联网科技公司营业执照怎么办理
长沙互联网科技
上海钢联属于互联网科技股吗
银川新华互联网科技学校是国营吗
中国互联网公司的科技投入
10位科技互联网大佬
六子台科技互联网展会
新华互联网科技
腾讯阿里互联网科技
麻工互联网科技
上海互联网科技有限公司
科技服务与互联网
新华互联网科技2019
中国航天科技大学国际工业互联网
开一家科技互联网公司需要多少钱
畅思互联网科技
扫呗互联网科技有限公司