ajaxfileupload.js的文件上传附带传参

今天公司项目需要用到文件上传,所以就用了ajaxfileupload.js,但是有个需求是既要上传文件又要传递几个参数,所以卡了几个小时,网上查询资料后,随笔小记一下!
ajaxfileupload.js原版的是不支持参数传递的,也就是没有普通的ajax的data属性,所以我们需要更改ajaxfileupload.js的一点源代码。顺便提醒一下,如果Ctrl+s保存不了,要么是快捷键冲突,要么是ajaxfileupload.js中有中文注释,注释的编码不对,删除注释,自己添加即可!

function ajaxFileUpload(DOMId,row){
    var param={"exam.class_id":row.class_id,
            "exam.subject_id_list":row.subject_id_list,
          "exam.subject_name_list":row.subject_name_list};
    $.ajaxFileUpload({
        url:'importExcel_Exam_n.do?'+param,
        type:'post',
        secureuri: false,
        fileElementId: DOMId,
        dataType:'text/plain',
        *data:param,*
        success: function(data, status){  
            $('#imageName').html(data);
        },
        error: function(data, status, e){
            $('#imageName').html('上传失败');
        }
    });
}

data这一个参数根本就不被ajaxfileupload.js支持。
但是可以通过更改ajaxfileupload.js来支持这一参数。具体如下:
打开ajaxfileupload.js源码(网上的版本好像一般都是未压缩的,所以可以直接查看源码),找到这块代码:

createUploadForm: function(id, fileElementId){

 var formId = 'jUploadForm' + id;
 var fileId = 'jUploadFile' + id;
 var form = jQuery('<form  action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');

//...中间省略

return form;

}

新增星号中间部分代码(两段代码):

createUploadForm: function(id, fileElementId*,data*){

 var formId = 'jUploadForm' + id;
 var fileId = 'jUploadFile' + id;
 var form = jQuery('<form  action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');

//...中间省略
*if(data){
      for(var i in data){
          $('<input type="hidden" name="'+i+'" value="'+data[i]+'"/>').appendTo(form);
      }
}*
return form;
}

还有一处需要修改,是为了接收data参数,找到这一部分代码:

ajaxFileUpload: function(s) {
        // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout  
        s = jQuery.extend({}, jQuery.ajaxSettings, s);
        var id = s.fileElementId;        
  var form = jQuery.createUploadForm(id, s.fileElementId);

新增星号中间部分代码(一段代码):


ajaxFileUpload: function(s) {
        // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout  
        s = jQuery.extend({}, jQuery.ajaxSettings, s);
        var id = s.fileElementId;        
  var form = jQuery.createUploadForm(id, s.fileElementId*,s.data*);

修改完保存,再次运行,后台就可以接收到传递过来的json参数了!
原址:原址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值