最近项目涉及到附件上传就头痛,一直在用plupload插件在做。。。ie9偶尔抽风但还是可以的。。。

然后有个需求,表格每行都有个上传按钮,页面多上传按钮。

 

一、开始的时候,用plupload做的,多实例上传

  将browse_button触发按钮,设置成数组,这种方法也可以实现上述需求,但是ie9没反应,,,我不知道什么也不知道。。。
  打印了一下,ie9 的runtime是html4,然后把上传方式调换了顺序,没用。。。
  上传附件的时候,只执行了FilesAdded方法,不懂不懂
  1. this.pluploader = new plupload.Uploader({
  2. runtimes: \'html5,flash,silverlight,html4\', //上传方式
  3. headers: {Accept: \'application/json; charset=utf-8\'},
  4. browse_button: arr, //触发按钮
  5. url: this.uploaderUrl,
  6. flash_swf_url: \'../common/lib/plupload/Moxie.swf\', //flash上传组件的地址
  7. silverlight_xap_url: \'../common/lib/plupload/Moxie.xap\',
  8. multi_selection:false,//不可选择多个文件同时上传
  9. filters: {
  10. max_file_size: \'50mb\' //限定文件大小
  11. // prevent_duplicates: true, //是否允许选取重复文件,默认false为允许
  12. }
  13. });

   以后我知道原因会更新的。。。

 

二、无奈,换了ajaxSubmit来做上传,这个方法很久前被我抛弃了,因为在ie9,ajaxSubmit请求返回数据成功,但是不执行success回调函数。

  今天终于找到原因了,是返回数据的数据类型问题,ie9返回的数据是json字符串,不是对象。心累。

  设置请求参数 dataType:\’text\’,就可以进入success,将数据类型JSON.parse()转成对象就行了。

  1. this.$el.find("form"+\'.\'+targetClass).ajaxSubmit({
  2. url: this.uploaderUrl,
  3. contentType: "application/x-www-form-urlencoded; charset=utf-8",
  4. dataType:\'text\',
  5. enctype:"multipart/form-data",
  6. method:"POST",
  7. type:"POST",
  8. data:obj,
  9. success: $.proxy(function (result, status) {
  10.   if(typeof(result)===\'string\'){
  11. result = JSON.parse(result)
  12. }
  13. if (result.success) {
  14. //上传成功
  15. } else {}
  16. },this),
       error:
    function(res) {}
  17. });

 

  

  

 

 

 

 

 

 

版权声明:本文为anyxl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/anyxl/p/10038346.html