ajaxfileupload上传文件dataType为json时报jQuery.handleError is not a function

本文介绍了一种在使用jQuery的ajax请求时遇到的JSON数据解析问题,并提供了解决方案。通过对返回的数据进行适当的字符串处理,使得能够正确地解析非标准JSON格式的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dataType为json会报Uncaught TypeError: jQuery.handleError is not a function
报错截图:
这里写图片描述
返回数据:

data = "<pre style="word-wrap: break-word; white-space: pre-wrap;">{"time":"0.473S","resultMsg":"操作成功","resultFlag":"00","isFullMatch":"","result":[],"input":[]}</pre>"

不是json类型的,所以去ajaxfileupload.js源码里加了截取字符串后,返回数据如下

data = Object {time: "0.435S", resultMsg: "操作成功", resultFlag: "00", isFullMatch: "", result: Array[0]…}, status = "success"

ajaxfileupload.js源代码中uploadHttpData:

uploadHttpData: function( r, type ) {
        var data = !type;
        data = type == "xml" || data ? r.responseXML : r.responseText;
        // 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("<div>").html(data).evalScripts();

        return data;
    }

type等于json时添加截取字符串操作:

        // Get the JavaScript object, if JSON is used.
        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 + 1, end); 
                }
            }
            eval( "data = " + data );

另外:
当dataType改为text时不会报这个错,但是返回时进入不了success,当加了上面的代码后也能成功进入success

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值