使用插件ajaxfileupload通过ajax方式上传文件,在火狐下出错
======================================================
注:本文源代码点此下载
======================================================
以前网站要实现了一个在线预览文件的功能,其中后台管理时用到了ajax上传。我用的是一个jquery插件ajaxfileupload.js
今天同事使用时突然报错了(以前没有问题,我们用的都是火狐浏览器,后来我让她用其他浏览器没有问题),我试了一下也出错了。alertsyntaxerror: missing ; before statementerror 这个应该是js语法错误。记得当时也出现过这个错误,不过后来怎么解决的忘记了(当然也可能是我记错了可能)。
调用ajaxfileupload上传的部分代码如下
1 $.ajaxfileupload
2(
3{
4url:'eb_price.php?'+parm,
5secureuri:false,
6fileelementid:'f_file',
7datatype: 'json',
8success: function (data, status)
9{
10fun(data)
11},
12error: function (data,status,e)
13{
14alert(e+status)// 商品;
15
16}
17}
18);
经过分析是在调用jquery.uploadhttpdata( xml, s.datatype ); 由于语法错误抛出了异常
view code
1try {
2status = istimeout != "timeout" ? "success" : "error";
3// make sure that the request was successful or notmodified
4if ( status != "error" )
5{
6// process the data (runs the xml through httpdata regardless of callback)
7var data = jquery.uploadhttpdata( xml, s.datatype );
8// if a local callback was specified, fire it and pass it the data
9if ( s.success )
10s.success( data, status );
11
12// fire the global callback
13if( s.global )
14jquery.event.trigger( "ajaxsuccess", [xml, s] );
15} else
16jquery.handleerror(s, xml, status);
17} catch(e)
18{
19status = "error";
20jquery.handleerror(s, xml, status, e);
21}
由于要返回的数据类型是datatype:'json'格式的;感觉错误出在json字符串的解析上面。即把json格式的字符转换为对象;
uploadhttpdata: function( r, type ) {
var data = !type;
bug(r);//bug为封装的firebug的console.log();
data = type == "xml" || data ? r.responsexml : r.responsetext;
bug(data);
// if the type is "script", eval it in global context
if ( type == "script" )
jquery.globaleval( data );
// get the javascript object, if json is used.
if ( type == "json" )
eval( "data = " + data );
// evaluate scripts within html
if ( type == "html" )
jquery("
").html(data).evalscripts();
return data;
}
两次输出的结果如图
可以看到 第二次bug(data);data的内容多出了一段html代码,都这样了不错才怪呢。这段代码我看着很熟悉,突然想到了。好像是火狐的魔镜插件,嵌入的;
在firebug的网络面板中,可以看到返回的数据貌似是正常的
只不过后来又遭到了修改。
你随便打开一个网页在firebug中可以看到这个隐藏的div;
现在一切都清楚了,
我同事之所以以前用火狐没事,现在突然出现了这个问题,,就是因为两天前 火狐魔镜升级了。(貌似你以前没有安装魔镜,在这次更新过程中,会自动安装。此前把魔镜禁用了,升级为火狐应用中心后,它就成了启用状态了。这只是我的猜想)。
另外这个插件肯定不会在每次请求中都会嵌入代码;这段代码跟播放视频的播放器有关系,通过它在播放器周围显示一个框框,提示你可以单独拿出来播放。
插件之所以会在ajax上传后返回的结果中嵌入,是因为ajaxfileupload中的ajax并不是我们平时所用的那个ajax。它只是创建了一个隐藏的iframe,并在里面创建了表单文件域的等,把文件提交到服务器。然后将iframe中的内容,即web服务器返回的结果,经过处理返回给调用它的代码。
解决方法:
1.换浏览器。(因为这个功能只是我们的后台人员在用,当然可以这么做^_^)
2.卸载插件。
3.js判断是否存在此代码。若存在替换为空字符串;
不过最好的方式还是这个插件不要修改原来网页的结构。感觉在实现原来效果的情况下,而不修改结构是可以实现的。
2011 8.19 昨晚回到家后去火狐社区逛了一圈。遇到这个问题的不光是我一个。会在fckeditor编辑器里插入那个用于弹出视频的代码
并有回复:问题已经修复已发布5.0.1版 – 超 频
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
使用插件ajaxfileupload通过ajax方式上传文件,在火狐下出错相关推荐
- jquery ajax java上传文件_jQuery Ajax方式上传文件的方法
jQuery Ajax方式上传文件用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这 ...
- koa2:通过Ajax方式上传文件,使用FormData进行Ajax请求
koa2通过表单上传的网上很多,但通过Ajax方式上传文件,使用FormData进行Ajax请求,不好找. 参考了这个用base64上传图片的例子.https://github.com/Yuki-Mi ...
- ashx获取input file 文件_通过Ajax方式上传文件(input file),使用FormData进行Ajax请求...
一直以来上传文件都使用的是别人的组件,今天看下无刷新上传内部具体的做法.上传文件可以使用form的形式来上传,也可以通过构造formData使用ajax来上传文件: 上传图片 $(function ( ...
- Ajax方式上传文件报错Uncaught TypeError: Illegal invocation
今天使用ajax上传文件时,出现了错误.数据传输的方式是通过定义formData完成的,提交的文件对象也设置为dom对象,但是还是不能发送请求.F12看到后台报了个错误:Uncaught TypeEr ...
- 通过$.Ajax()方式上传文件,使用FormData进行Ajax请求,应注意
首先, 在 http 中传输文件的问题.起初,http 协议中没有上传文件方面的功能,直到 rfc1867 为 http 协议添加了这个功能.当然在 rfc1867 中限定 form 的 method ...
- 通过Ajax方式上传文件(input file),使用FormData进行Ajax请求
<script type="text/jscript">$(function () {$("#btn_uploadimg").click(funct ...
- jq ajax异步上传文件,jQuery插件ajaxFileUpload异步上传文件
AjaxFileUpload.js并不是一个很出名的插件,只是别人写好的放出来供大家用,原理都是创建隐藏的表单和iframe然后用JS去提交,获得返回值. 当初做了个异步上传的功能,选择它因为它的配置 ...
- 在Eclipse上使用egit插件通过ssh协议方式上传项目代码的具体步骤
在Eclipse上使用egit插件通过ssh协议方式上传项目代码 前戏: 使用ssh方式可以不通过https协议,避免直接提供账号密码的方式上传项目到git在线服务器,如Bitbucket.GitHu ...
- java序列化表单同步请求_Ajax serialize() 表单进行序列化方式上传文件
通过传统的 form 表单提交的方式上传文件 上传文件: 不过传统的 form 表单提交会导致页面刷新,但是在有些情况下,我们不希望页面被刷新,这种时候我们都是使用 Ajax 的方式进行请求的. 使用 ...
最新文章
- Comparable和Comparator的比较
- Python 字符串操作方法大全
- MATLAB 图像处理函数(第六章)(获取图像矩形像素的运用)
- 腾讯多任务模型MFH
- 计算机导论分流考试,以学习成果与兴趣培养为导向的计算机导论课程教学改革研究与实践...
- 【大话存储】学习笔记(7章), OSI模型
- mysql5.7延迟_[MySQL] 号称永久解决了复制延迟问题的并行复制,MySQL5.7-阿里云开发者社区...
- HTML中IE条件注释判断语句(!--[if XX IE X]![endif]--)
- 主机一拖二 linux,使opensuse12.1实现一拖二(拖机)的双人使用系统(上)
- Nero 7序列号的验证方法
- 想要制作好看的壁纸,有CorelDRAW就够啦
- 微信服务号、订阅号和企业号的差别(运营和开发两个角度)
- 12道Java高级面试题:java时间差计算
- SpringBoot+Vue前后端分离java社团纳新活动报名网站
- 当代年轻人到底怎么跨越阶层?
- 数据库 连接(自然连接,内连接,外连接)
- 获取发表论文期刊的封面和目录页
- SDCC 2016·北京站年终收官巨献,五十位演讲嘉宾和议题大公布
- 例说图解TCP/IP协议族--TLS篇(1)抓包分析SSL/TLS握手
- foobar2000 1.1.10 用苹果新近开源的ALAC编码器很方便将APE、FLAC、WAV转无损m4a
热门文章
- APache安装步骤
- 小程序隐藏滚动条_透视智能小程序思享会,和隐藏起来的百度“新流量故事”...
- 23套高质量PPT模板—培训课件主题
- 制造业企业erp软件测试工作,浅谈制造业ERP项目的验收测试
- 一女生上厕所忘带纸了。
- 网传最准确的2023年国家线预测!!
- 关于Bandizip 解压7z、rar、zip文件格式的时候,无法双击打开的问题
- 机锋市场的界面实现1
- 312个免费高速HTTP代理IP(能隐藏自己真实IP地址) - 杨尚川的个人页面 - 开源
- winzip universal解压