-
本地测试正常,但把项目上传到服务器,出现两个问题,
-
一,上传文件读取的绝对路径不正确(本地不管在那个盘弹框提示都是C盘的,可能是临时生成文件路径,暂时无法解答)
-
二,调用Google 页面调试,提示Uncaught TypeError: undefined is not a function 错误, 也就是ajaxfileupload.js文件没有被加载,后来查资料,发现是浏览器兼容问题,特把js里面代码做如下修改
-
1.上传过程中 会出现缺少函数 handleError,只需要在ajaxfileupload.js末尾添加函数如下:
-
这个是因为在jQuery1.4版本以上删除了handleError这个方法,在js最后加上就行了
-
handleError: function( s, xhr, status, e ) {
-
if ( s.error ) {
s.error.call( s.context || window, xhr, status, e );
}
if ( s.global ) {
(s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
}
}
-
2.在上传过程中,FF和GOOGLE chrome都能上传成功,但GOOGLE中不执行回调函数,
ajaxfileupload.js中查找 if ( type == "JSON" ){
eval("data = \" "+data+" \" ");
-
3.IE浏览器中,IE8可以正常上传,但IE9和IE10都无法上传,这是由于IE浏览器的版本升级问题。修改方法如下:
查找
if(window.ActiveXObject) {
var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');
if(typeof uri== 'boolean'){
io.src = 'javascript:false';
}
else if(typeof uri== 'string'){
io.src = uri;
}
}
修改成
if(window.ActiveXObject) {
if(jQuery.browser.version=="9.0" || jQuery.browser.version=="10.0"){
var io = document.createElement('iframe');
io.id = frameId;
io.name = frameId;
}else if(jQuery.browser.version=="6.0" || jQuery.browser.version=="7.0" || jQuery.browser.version=="8.0"){
var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');
if(typeof uri== 'boolean'){
io.src = 'javascript:false';
}
else if(typeof uri== 'string'){
io.src = uri;
}
}
}
-
以上基本可以解决浏览器兼容问题,以下做拓展,
-
如何让ajaxfileupload.js可以在文件上传的同时传递多个台数。
找到以下代码:
- 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 = new Date().getTime()
- 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 = new Date().getTime()
- var form = jQuery.createUploadForm(id, s.fileElementId, s.tag_name, s.tag_link, s.tag_sort, s.tag_status, s.tag_id);
接着找到:
- createUploadForm: function(id, fileElementId, tag_name, tag_link, tag_sort, tag_status, tag_id)//增加tag_name, tag_link, tag_sort, tag_status, tag_id
- {
- //create form
- var formId = 'jUploadForm' + id;
- var fileId = 'jUploadFile' + id;
- //--增加以下内容
- var tagNameId = 'tag_name' + id;
- var tagLinkId = 'tag_link' + id;
- var tagSortId = 'tag_sort' + id;
- var tagStatusId = 'tag_status' + id;
- var tagIdId = 'tag_id' + id;
- //--end
- var form = $('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');
- var oldElement = $('#' + fileElementId);
- var newElement = $(oldElement).clone();
- //--增加以下内容
- var tagNameElement = '<input type="text" name="tag_name" value="'+tag_name+'">';
- var tagLinkElement = '<input type="text" name="tag_link" value="'+tag_link+'">';
- var tagSortElement = '<input type="text" name="tag_sort" value="'+tag_sort+'">';
- var tagStatusElement = '<input type="text" name="tag_status" value="'+tag_status+'">';
- var tagIdElement = '<input type="text" name="tag_id" value="'+tag_id+'">';
- //--end
- $(oldElement).attr('id', fileId);
- $(oldElement).before(newElement);
- $(oldElement).appendTo(form);
- //--增加以下的内容
- $(tagNameElement).appendTo(form);
- $(tagLinkElement).appendTo(form);
- $(tagSortElement).appendTo(form);
- $(tagStatusElement).appendTo(form);
- $(tagIdElement).appendTo(form);
- //--end
- //set attributes
- $(form).css('position', 'absolute');
- $(form).css('top', '-1200px');
- $(form).css('left', '-1200px');
- $(form).appendTo('body');
- return form;
- },
修改完后,如何使用?
- $.ajaxFileUpload({
- url:web_url,
- secureuri:false,
- //以下为增加的传递参数
- tag_name:tag_name,
- tag_link:tag_link,
- tag_sort:tag_sort,
- tag_status:tag_status,
- tag_id:tag_id,
- //--end
- fileElementId:result[0],
- dataType: 'json',
- success: function (data,status){}
- //以下省略
异步上传,兼容性IE6到10,FF,GOOGLE
最新推荐文章于 2021-08-06 00:18:42 发布