$.ajax跨域,服务器返回的是json格式

2018-03-14  本文已影响0人  风筝啊

ajax跨域使用的是jsonp,返回的数据也应该是jsonp格式({}),但是昨天做了个项目,对方返回的是json格式,这个就尴尬了。服务器上的又不能改,所以只能另想办法了。
经过不懈努力,终于找到了方法,通过雅虎的YQL雅虎查询语言转换一下。

当然请求回来的数据虽然是可以使用了,但是也经过了层层包裹。

image.png

相信看到这个数据结构,也都能够解析,调用数据了。不罗嗦了

//这是我们正常跨域请求需要的请求链接。里面的参数正常应该是需要js动态补充的,这里只是歌例子。
 var oUrl = "https://api.xxxx.com/Public/registerForCRMbyExtenduid?mob=13111111111&pw=000000"

            $.ajax({
                url: 'http://query.yahooapis.com/v1/public/yql',//雅虎的请求地址
                dataType: 'jsonp',
                data: {
                    q: "select * from json where url=\'" + oUrl+ "'",//数据格式。oUrl是上面我们动态生成的链接
                    format: "json"
                },
                success: function (data) {
                    //这里是正常解析了。
                    console.log(data.query.results.json)
                    if(data.query.results.json.success  == "false"){
                        $("#warning").fadeIn();
                        $('#warning strong').html(data.query.results.json.message);
                    }else if(data.query.results.json.success  == "true"){
                        $("#success").fadeIn();
                        $('#success strong').html(data.query.results.json.message);
                    }
                },
                error:function(){
                    $("#warning").fadeIn();
                    $('#warning strong').html("连接超时");
                }
            });

这里数据是可以展示成功了。但是相对来说,这返回速度真不是一般慢啊。所以,如果需要做天气预报那样的还可以忍受,但是象我这次的东西真的是没办法忍受的。

后来领导发话了。这个东西还是后台返了我一个jsonp的数据。哈哈。

上一篇 下一篇

猜你喜欢

热点阅读