执行ajaxFileUpload发生jQuery.handleError is not a function错误的个人解决方法

最近用到了ajaxFileUpload,但是当运行时会出现这个问题:jQuery.handleError is not a function。折磨我了很久,于是就从网上查阅,无外乎如下一种解决方法:

1.handlerError只在jQuery-1.4.2之前的版本中存在,jQuery-1.4.2之后的版本中都没有这个函数了,所以在ajaxFileUpload源码中自己要收到添加这个函数。
但是在360浏览器中当你执行程序会一直跳到error函数 ,无法执行指定的success方法。火狐浏览器没有问题。网上的解法是将
<pre name="code" class="html">if(type=="json") 
 
 
  eval("data = "+data); 
改为
if(type=="json")
<pre name="code" class="html">eval("data = \" "+data+" \" ");
 
 但是修改后还是不能跳到success方法中去,于是我单步调试, 
发现返回的data数据格式并不规范,莫名的添加了一些字符串,见下图:
你会发现json数据后面加了一个audio标签,导致json数据格式不合法。但是在火狐浏览器中返回的json数据格式却是合法,这里可能是浏览器兼容性的问题,也有可能是ie浏览器对于上传的安全性问题导致,具体问题有大神看到帮忙解答一下,谢谢!
对于上面的问题,我的解决方法是截取合格json字符串,修改代码如下:
if ( type == "json" )  {
    data = r.responseText;  
    var start = data.indexOf("{");  
    if(start != -1) {  
       var end = data.indexOf("}", start + 1);  
       if(end != -1) {  
       data = data.substring(start, end + 1);  
       }  
    } 
 }
修改后运行后问题解决,得到想要的json数据。


对于这个问题网上也有说会出现pre标签, 解决方法也是截取,但是indexOf的<>字符,所以我觉得最有效的方法就是截取{},这样就会得到合法的json数据。其实最好的方法就是设断点调试,看看自己的返回数据到底出现了什么错误,从而找到最有效的解决方法。
以上是个人的想法,欢迎指正批评。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值