ajaxSubmit请求返回数据成功,但是不执行success回调函数
最近项目涉及到附件上传就头痛,一直在用plupload插件在做。。。ie9偶尔抽风但还是可以的。。。
然后有个需求,表格每行都有个上传按钮,页面多上传按钮。
一、开始的时候,用plupload做的,多实例上传
- this.pluploader = new plupload.Uploader({
- runtimes: \'html5,flash,silverlight,html4\', //上传方式
- headers: {Accept: \'application/json; charset=utf-8\'},
- browse_button: arr, //触发按钮
- url: this.uploaderUrl,
- flash_swf_url: \'../common/lib/plupload/Moxie.swf\', //flash上传组件的地址
- silverlight_xap_url: \'../common/lib/plupload/Moxie.xap\',
- multi_selection:false,//不可选择多个文件同时上传
- filters: {
- max_file_size: \'50mb\' //限定文件大小
- // prevent_duplicates: true, //是否允许选取重复文件,默认false为允许
- }
- });
以后我知道原因会更新的。。。
二、无奈,换了ajaxSubmit来做上传,这个方法很久前被我抛弃了,因为在ie9,ajaxSubmit请求返回数据成功,但是不执行success回调函数。
今天终于找到原因了,是返回数据的数据类型问题,ie9返回的数据是json字符串,不是对象。心累。
设置请求参数 dataType:\’text\’,就可以进入success,将数据类型JSON.parse()转成对象就行了。
- this.$el.find("form"+\'.\'+targetClass).ajaxSubmit({
- url: this.uploaderUrl,
- contentType: "application/x-www-form-urlencoded; charset=utf-8",
- dataType:\'text\',
- enctype:"multipart/form-data",
- method:"POST",
- type:"POST",
- data:obj,
- success: $.proxy(function (result, status) {
- if(typeof(result)===\'string\'){
- result = JSON.parse(result)
- }
- if (result.success) {
- //上传成功
- } else {}
- },this),
error:function(res) {}- });