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

  • Post author:
  • Post category:其他





最近用到了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数据。其实最好的方法就是设断点调试,看看自己的返回数据到底出现了什么错误,从而找到最有效的解决方法。



以上是个人的想法,欢迎指正批评。



版权声明:本文为beyondsunqixin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。