[原创]使用ajaxFileUpload.js上传文件时附带额外参数。

最近公司的一个项目涉及到导入Excel的功能,于是就想到用ajaxFileUpload来实现上传文件,因为用过很多次了,网上也有很多文章介绍。使用方法不表。但是在附带参数这个环节卡住了:文件可以上传到后台,但是附带的json参数怎么都传不到后台。

通过网上的文章和查看ajaxFileUpload.js源码发现: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参数了!

时间: 2024-10-01 01:28:47

[原创]使用ajaxFileUpload.js上传文件时附带额外参数。的相关文章

Jquery AjaxFileUpload.js 上传文件 所遇问题解决办法

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">导入 AjaxFileUpload.js 文件</span> js代码 $.ajaxFileUpload({ url: 'upload',//处理图片脚本 secureuri : false, fileElementId : 'uploadImg',//file控件id da

jquery插件--ajaxfileupload.js上传文件原理分析

英文注解应该是原作者写的吧~说实话,有些if判断里的东西我也没太弄明白,但是大致思路还是OK的. jQuery.extend({ createUploadIframe: function (id, uri) {//id为当前系统时间字符串,uri是外部传入的json对象的一个参数 //create frame var frameId = 'jUploadFrame' + id; //给iframe添加一个独一无二的id var iframeHtml = '<iframe id="' + f

ajaxfileupload.js上传文件兼容IE7及以上版本

要兼容IE789,要修改ajaxfileupload.js;要将此处的代码替换掉 if(window.ActiveXObject) { var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />'); if(typeof uri== 'boolean'){ io.src = 'javascript:false'; } else if(typ

js上传文件

一.原始的XMLHttpRequestjs上传文件过程(参考地址:http://blog.sina.com.cn/s/blog_5d64f7e3010127ns.html) 用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这两个对象,但IE9尚未支持 FormData 对象,还在用IE6 ? 只能仰天长叹.... 有了这两个对象,我们可以真正的实现Ajax方式上传文件. 示例代码:

jQuery插件-ajaxFileUpload异步上传文件

ajaxFileUpload是前两天学习过程中接触到的一个JQ插件,功能很简单,就是实现异步上传文件的功能. 1.语法介绍 $.ajaxFileUpload([setting]); 参数说明: (1)url——执行上传处理的地址: (2)secureuri——是否启用安全提交,默认为false: (3)fileElementId——需要上传<input type=”file”>控件id属性值: (4)data——自定义参数,即需要额外传递的JSON格式数据: (5)type——请求方式,提交自

在使用 AjaxFileUpload 上传文件时,在项目发布到 iis 后,图片不能预览

在使用 AjaxFileUpload  上传文件时,图片已经上传成功了,在站点没有发布时,可以预览,可是在项目发布到 iis 后,图片就不能预览,在网上找了很多的方案也没解决,最后的解决方案如下: 1.开始运行 regedit 打开注册表,先备份注册表 2.找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters 3.在 编辑 菜单上指向 新建 ,然后单击 DWORD 值 . 4.键入 EnableAggres

【转】JQuery插件ajaxFileUpload 异步上传文件(PHP版)

前几天想在手机端做个异步上传图片的功能,平时用的比较多的JQuery图片上传插件是Uploadify这个插件,效果很不错,但是由于手机不支持flash,所以不得不再找一个文件上传插件来用了.后来发现ajaxFileUpload这个插件挺不错,所以就用这个插件来做异步上传文件的效果.网上也有很多对ajaxFileUpload插件的使用的文章,不过我发现没有PHP版,所以这次服务器那边的处理就使用PHP语言来处理. 一.先对ajaxFileUpload插件的语法参数进行讲解 原理:ajaxfileu

JQuery插件ajaxFileUpload 异步上传文件(PHP版)

太久没写博客了,真的是太忙了.善于总结,进步才会更快啊.不多说,直接进入主题. 前几天想在手机端做个异步上传图片的功能,平时用的比较多的JQuery图片上传插件是Uploadify这个插件,效果很不错,但是由于手机不支持flash,所以不得不再找一个文件上传插件来用了.后来发现ajaxFileUpload这个插件挺不错,所以就用这个插件来做异步上传文件的效果.网上也有很多对ajaxFileUpload插件的使用的文章,不过我发现没有PHP版,所以这次服务器那边的处理就使用PHP语言来处理. 一.

js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中

ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' + id; if(window.ActiveXObject) { var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '&qu