在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ jsonp跨域報(bào)錯(cuò)

jsonp跨域報(bào)錯(cuò)

前端

$.ajax({
    type: "GET",
    url: "localhost:3000/getData.jsonp",
    dataType: "jsonp",
    success: function(data) {
      console.log(data)
    }
});

node

const Koa = require('koa')
const app = new Koa()
app.use(async(ctx) => {
    console.log(ctx.method);
    ctx.set("Access-Control-Allow-Origin", "*");
    /*星號(hào)表示所有的異域請(qǐng)求都可以接受,*/
    ctx.set("Access-Control-Allow-Methods", "GET,POST");
    // 如果jsonp 的請(qǐng)求為GET
    if (ctx.method === 'GET' && ctx.url.split('?')[0] === '/getData.jsonp') {
        console.log(ctx.query)
        // 獲取jsonp的callback
        let callbackName = ctx.query.callback || 'callback'
        let returnData = {
            success: true,
            data: {
                text: 'this is a jsonp api',
                time: new Date().getTime(),
            }
        }
        // jsonp的script字符串
        let jsonpStr = `;${callbackName}(${JSON.stringify(returnData)})`
        // 用text/javascript,讓請(qǐng)求支持跨域獲取
        ctx.type = 'text/javascript'
        // 輸出jsonp字符串
        ctx.body = jsonpStr
    } else {
        ctx.body = 'hello jsonp'
    }
})
app.listen(3000, () => {
    console.log('[demo] jsonp is starting at port 3000')
})

瀏覽器訪問(wèn)報(bào)錯(cuò),控制臺(tái)里面后臺(tái)都沒(méi)打印

圖片描述

圖片描述

圖片描述

node端沒(méi)打印東西,node里面應(yīng)該是沒(méi)走到那里

大神們,請(qǐng)幫助啊

回答
編輯回答
冷咖啡

ctx.url.split('?')[0] === '/getData.jsonp'這句話能通過(guò)?

2017年6月23日 02:34
編輯回答
苦妄

jsonp 沒(méi)有跨域的問(wèn)題。

2017年7月6日 21:41
編輯回答
愿如初

打印一下你的jsonpStr ,看看拼接后的到底是個(gè)什么樣的吧

2018年1月26日 06:27
編輯回答
無(wú)標(biāo)題

題主你的請(qǐng)求方式有問(wèn)題,建議谷歌一下jsonp是怎么請(qǐng)求數(shù)據(jù)的

2017年5月19日 23:37