使用jsonp有数据返回,但是success不执行的解决办法

前台设计中,涉及到跨域访问的时候,

通常情况下都会使用jsonp,

但是,有时候这个jsonp的Ajax请求已经返回数据了,但是success得函数却不能执行,

也不提示任何错误,

这里就要在Ajax请求的error函数里面去捕捉错误了

Ajax请求如下

 $.ajax({
                async: false,
                url: "",
                type: "post",
                dataType: 'jsonp',
                jsonp: 'callbackparam',
                jsonpClaaback: "success_jsonpCallback",//用户定义的callback函数,没有定义的话会jQuery会自动生成以jQuery开头的函数
                data: {},
                error: function (XMLHttpReuqest, textStautus, errothrown) {
                    console.log(XMLHttpRequest.status);
                    console.log(XMLHttpReuqest.readyState);
                    console.log(XMLHttpRequest.responseText);
                    console.log(textStautus);
                    console.log(errothrown);
                },
                success: function (json) {
                    alert(json);
                }
            });

                    console.log(XMLHttpRequest.status);//返回200 说明正确
                    console.log(XMLHttpReuqest.readyState);//返回4,说明饭也正确,页面可以调用这些数据
                    console.log(XMLHttpRequest.responseText);//显示返回的数据,要的就是这些数据,但是在success中却不能处理
                    console.log(textStautus);//parseerror提示这个错误,重点就在这个错误上
                    console.log(errothrown);
这个parseerror的parse 是不是很熟悉?

对 这个就是jQuery里面转换成json的方法parseJson,

而这个parseerror的意思就是json解析错误,这里面就找到问题了

是你后台返回的json格式有问题

 jQuery库从1.4开始对json格式的要求开始严格,

按照我上面的Ajax请求,返回的数据格式应该是下面的格式

success_jsonpCallback({"id":"123a","age":23,"name":"amy"});
除了这个返回格式,其他都会报parseerror的错误

这里面必须要注意最后的那个分号

因为返回的是一个函数,在jQuery里面需要以分号结尾。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值