jquery ajax jsonp跨域获取json数据

通过GET方式来获取后台的json数据。

欢迎大神给建议!~~

前几天后台给了我一个接口,让我用GET方式来获取后台数据,看起来是件很简单不过的事情,但我在实际获取中才发现问题挺恼火的,为此纠结了好几天 ,在网上查阅了大量的资料,总算是解决了问题,今天借此机会总结下,如果你也遇到我这样的问题,可以按照此方法试试。

第一次用GET方式json类型来获取

代码如下:

$.ajax({
    type:'GET',
    url:'https://weixin-test-ziweigamepoch.c9users.io/api/users',
    dataType:'json',
    success:function(data){
    },
    error:function(jqXHR){
    }
});

会出现以上图片中的报错:提示是因为跨域的问题。如果出现这个报错就说明后台没给你设置跨域,你可以直接找后台,因此我屁颠屁颠去找后台说理,人家说需要我自己来解决,好吧! 就这样又开始查资料...

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第二次用GET方式jsonp类型来获取

代码如下:

$.ajax({
    type:'GET',
    url:"https://weixin-test-ziweigamepoch.c9users.io/api/users",  
    dataType:'jsonp',  
    data:'',  
    jsonp:'callback',  
    success:function(result) {  
        console.log(result);
    },  
    timeout:3000  
});  

网上说了一大堆用jsonp的方法跨域,我就各种试,结果还是拿不到,因为后台返回的数据是json格式,所有即使你用jsonp跨域成功了,回调里面也拿不到数据,后台又不给你改格式,然后继续查资料~~~~~


如上图只能在Network中看到后台数据,此处本人已经快崩溃了。

在不改动后台的基础下,前端究竟能不能用jsonp拿到json数据呢?

答案是肯定的。

    ajax请求不同域名的页面时,由于浏览器安全限制是不允许请求的,发生错误。此时需要搭建服务器做代理捉取跨域页面,ajax请求自己建立的代理页面。如果你不想建立自己的代理服务,因为有时我根本就没打算涉及服务端任何代码,但是讨厌的浏览器的同源策略,阻止了我们的ajax调用。下面是本人找到的办法:

$.ajax({

    type:'GET',
    url:"http://query.yahooapis.com/v1/public/yql",  
    dataType:'jsonp',  
    data: {
        q: "select * from json where url=\'https://weixin-test-ziweigamepoch.c9users.io/api/users\'",
        format: "json"
    },
    success:function(d) { 
        var dada = d.query.results.json.json;
        console.log(dada);
        for(var i in dada) {
            
        }
    },  
});  
JSONP跨域接口在线代理API完美解决

想详细了解:http://www.w3dev.cn/article/20130319/query.yahooapis.com-v1-public-yql-JSONP-API-introduction.aspx

这种采用在线代理的做法实现简单,不需要自己搭建额外的代理(服务器)或其他操作。

但是,它也有缺点,比如

  1. 性能严重依赖外部代理服务器
  2. 外部代理服务器可以截获你所发送、接收的所有数据,即便你访问的原网址是 https 加密连接。


所有大家也根据实际情况而选择~!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值