最近用到了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 版权协议,转载请附上原文出处链接和本声明。