鍍金池/ 問(wèn)答/PHP  HTML/ 京東萬(wàn)象提供的新聞api接口前端怎么寫(xiě)呢?

京東萬(wàn)象提供的新聞api接口前端怎么寫(xiě)呢?

https://wx.jcloud.com/market/datas/31/11073,新聞api接口提供的地址,我申請(qǐng)成功,url是https://way.jd.com/jisuapi/get?channel=%E5%A4%B4%E6%9D%A1&num=10&start=0&appkey=b02e7c354e08422a24942125a5a65c97,瀏覽器直接打開(kāi)就可以顯示json數(shù)據(jù)。
可是jquery的ajax獲取的話,datatype為json的報(bào)跨域,datatype為jsonp的話,報(bào)錯(cuò)格式有問(wèn)題, 因?yàn)檫@就是一個(gè)json格式的數(shù)據(jù),那么應(yīng)該怎么獲取呢?需要后臺(tái)轉(zhuǎn)一下嗎?可是沒(méi)有后臺(tái)知識(shí),代碼如下:

<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>
回答
編輯回答
久礙你

很明顯這個(gè)api不支持jsonp的調(diào)用方式,后端應(yīng)用程序需要接收一個(gè)callback回調(diào)的函數(shù)名,其次需要添加Access-Control-Allow-Origin響應(yīng)頭,你可以讓后臺(tái)幫你請(qǐng)求,然后給你提供ajax請(qǐng)求接口。PS:樓上回答我也是醉了,有測(cè)試過(guò)嗎?亂放一堆錯(cuò)誤代碼。

2017年9月5日 15:04
編輯回答
綰青絲

我也用京東萬(wàn)象寫(xiě)過(guò)一個(gè)小的新聞頁(yè)面
https://www.nnnnzs.cn/news
jquery ajax獲取的是后端的php,后端的php才是去獲取頁(yè)面的 這種方法叫后端轉(zhuǎn)發(fā)
解決瀏覽器跨域問(wèn)題的方法之一
京東萬(wàn)象的新聞api有php的sdk可以下載 可以花點(diǎn)時(shí)間學(xué)一點(diǎn)php

2018年6月29日 16:18
編輯回答
萌小萌

我看你選了php的標(biāo)簽,為什么不讓后端用curl的方法獲取文字再傳到前端呢?

2017年11月28日 04:30
編輯回答
不二心

根據(jù)你提供的接口來(lái)看,該接口不支持jsonp,可以考慮以下兩種方式:

  1. 你們的后臺(tái)進(jìn)行接口轉(zhuǎn)發(fā)或者nginx進(jìn)行代理,也就是ajax訪問(wèn)同域接口,這個(gè)接口再去取京東的數(shù)據(jù);
  2. 讓京東響應(yīng)頭設(shè)置Access-Control-Allow-Origin屬性。
2017年5月1日 11:27
編輯回答
幼梔

這類(lèi)api都是讓你服務(wù)器端獲取數(shù)據(jù)的 你放在前端調(diào)用 不好限制你的訪問(wèn)頻率
做個(gè)后端的轉(zhuǎn)發(fā)吧 如果內(nèi)容不是實(shí)時(shí)性的 增加緩存機(jī)制 降低請(qǐng)求頻率

2018年2月18日 13:01
編輯回答
雅痞

通過(guò)url以及可以在瀏覽器中直接打開(kāi)可以判斷出來(lái),這個(gè)請(qǐng)求為get請(qǐng)求,參數(shù)在url中,所以應(yīng)該是type為‘get’才可以,另外由于請(qǐng)求的時(shí)候并非在相同域名下,根據(jù)同源策略,也是需要跨域請(qǐng)求的。
所以代碼應(yīng)該如下:

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

即可;
ps:另外,個(gè)人建議,不要把url公開(kāi)出來(lái),這樣申請(qǐng)的密匙就不是很安全了.

2017年10月3日 10:56
編輯回答
離夢(mèng)
$.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獲取數(shù)據(jù),后端還是要處理獲取到的數(shù)據(jù)的,否則還是會(huì)報(bào)錯(cuò)

2017年9月4日 07:54