京东万象提供的新闻api接口前端怎么写呢?

生峰狼牙人
  • 421

https://wx.jcloud.com/market/datas/31/11073,新闻api接口提供的地址,我申请成功,url是https://way.jd.com/jisuapi/get?channel=%E5%A4%B4%E6%9D%A1&num=10&start=0&appkey=b02e7c354e08422a24942125a5a65c97,浏览器直接打开就可以显示json数据。
可是jquery的ajax获取的话,datatype为json的报跨域,datatype为jsonp的话,报错格式有问题, 因为这就是一个json格式的数据,那么应该怎么获取呢?需要后台转一下吗?可是没有后台知识,代码如下:

<script type="text/javascript">
            $.ajax({
                type:"post",
                url:"https://way.jd.com/jisuapi/get?channel=%E5%A4%B4%E6%9D%A1&num=10&start=0&appkey=b02e7c354e08422a24942125a5a65c97",
//                dataType:"jsonp",    
//               jsonp:"callback",    
//               jsonpCallback:"success_jsonp",    
                success: function (res){
                    console.log(res)
                }
            });
        </script>
回复
阅读 5.2k
7 个回答

根据你提供的接口来看,该接口不支持jsonp,可以考虑以下两种方式:

  1. 你们的后台进行接口转发或者nginx进行代理,也就是ajax访问同域接口,这个接口再去取京东的数据;
  2. 让京东响应头设置Access-Control-Allow-Origin属性。

通过url以及可以在浏览器中直接打开可以判断出来,这个请求为get请求,参数在url中,所以应该是type为‘get’才可以,另外由于请求的时候并非在相同域名下,根据同源策略,也是需要跨域请求的。
所以代码应该如下:

$.ajax({
    url:'xxx',
    type:'GET',
    dataType:'jspnp',
}).done(function(res){
    if(res.code == '1'){
        console.log(res);
    } 
})

即可;
ps:另外,个人建议,不要把url公开出来,这样申请的密匙就不是很安全了.

墨墨墨墨小宇
  • 67
$.ajax({
    type: 'get',
    url: 'https://way.jd.com/jisuapi/get',
    data: {
        channel: '头条',
        num: 10,
        start: 0,
        appkey: 'b02e7c354e08422a24942125a5a65c97'
    },
    dataType: 'jsonp',
    jsonp: 'callback',
    success: function (data) {
        var json = JSON.stringify(data);
        console.log(json);
    },
    error: function (msg)
    {
        console.log(msg);
    }
})

前端ajax获取数据,后端还是要处理获取到的数据的,否则还是会报错

konohanaruto
  • 892

很明显这个api不支持jsonp的调用方式,后端应用程序需要接收一个callback回调的函数名,其次需要添加Access-Control-Allow-Origin响应头,你可以让后台帮你请求,然后给你提供ajax请求接口。PS:楼上回答我也是醉了,有测试过吗?乱放一堆错误代码。

这类api都是让你服务器端获取数据的 你放在前端调用 不好限制你的访问频率
做个后端的转发吧 如果内容不是实时性的 增加缓存机制 降低请求频率

我看你选了php的标签,为什么不让后端用curl的方法获取文字再传到前端呢?

我也用京东万象写过一个小的新闻页面
https://www.nnnnzs.cn/news
jquery ajax获取的是后端的php,后端的php才是去获取页面的 这种方法叫后端转发
解决浏览器跨域问题的方法之一
京东万象的新闻api有php的sdk可以下载 可以花点时间学一点php

宣传栏