$.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的数据。哈哈。