Ajaxfileupload 总结(包括插件处理json格式bug的解决方案)

摘要:
Ajaxfileupload是一个轻量级的js上传插件,简单易用。我今天学到了一点。1.引用jquery和Ajax文件上传。js<scriptsrc=“~/Scripts/jquery-1.8.2.min.js”></脚本>&书信电报;scriptsrc=“~/Scripts/ajaxfileupload.js”></脚本>2.

Ajaxfileupload 是一款轻量级js的上传插件,简单容易上手,今天简单学习了下。

1,引用jquery和Ajaxfileupload .js

   <script src="~/Scripts/jquery-1.8.2.min.js"></script>
    <script src="~/Scripts/ajaxfileupload.js"></script>

2,html代码

   <input type="file" id="touxiang" name="photo" size="10" onchange="changImg()" />

3,js的处理

   

  function changImg() {
            $.ajaxFileUpload({
                url: '/home/file',
                secureuri: false,  //是否启用安全提交
                dataType: 'text',   //数据类型
                fileElementId: 'touxiang', //表示文件域ID
                //提交成功后处理函数      data为返回值,status为执行的状态
                success: function (data, status) {}
                //提交失败的函数
                error:function(data,status,e){}


应该还会有一些其他的API,用到的时候再补充吧。

问题:上传插件不支持服务器返回的json格式的数据。

原因ajaxfileupload 的原理其实是动态创建了一个<ifream>标签,把你写的表单元素放到ifream 中再用一个post表单包起来,提交的时候直接提交表单,然后服务器返回的结果也是直接到ifream里面,所以json数据格式会被包裹上一层<pre>标签

解决方案: 1,先把$.ajaxFileUpload 参数列表里面datatype设置成text,不然无论执行成功或者失败,只要服务器返回数据,都会直接执行error方法。

               2,服务器用序列化工具返回json数据,在js里面用substr切割掉标签,然后序列化为json对象

  var result = data.toString().substr(5, data.length - 11);
                    var json = $.parseJSON(result);

              3,服务器用字符串拼接的方式返回一个json字符串,js里面直接序列化。  

return Content("{"msg":666}");

 

免责声明:文章转载自《Ajaxfileupload 总结(包括插件处理json格式bug的解决方案)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java进阶--List接口wpa_supplicant 的编译下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

十九、多文件上传(ajaxFileupload实现多文件上传功能)

来源于https://www.jb51.net/article/128647.htm 打开google 搜索"ajaxFileupload' ‘多文件上传"可以搜到许许多多类似的,那我为什么还要写一下呢?一个是对之前大神的贡献表示感谢;二个是自己知识的总结;三个是自己在原有的基础上改动了下,在此记录,可能帮助其他朋友。 用过这个插件的都知道这个插件的基本用...