angular2 jsonp跨域请求的问题

发布于 2022-09-04 09:47:19 字数 555 浏览 12 评论 0

1、先上代码

constructor(public http:Http, public jsonp:Jsonp) {
        this.jsonp.request('http://www.eastgrain.cn/data/list.html?callback=JSONP_CALLBACK')
            .map(res => res.json())
            .subscribe((response) => {
                console.log(response);
            }, (error) => {
                console.error(error);
            });
    }

2、报错信息

图片描述

3、求大神讲解,谢谢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

岛徒 2022-09-11 09:47:19

你请求的地址,返回的数据不是jsonp格式的。
jsonp本质上是靠script标签实现的,通过script加载一段js代码,并在加载完成时执行,为了达到这个效果,jsonp返回数据应该是一个函数调用,类似这样func({data1:1,data2:2});
这就需要服务器端程序配合,请求有callback参数时将该值拼接到json上。
所以,如果网站是你的,你得改后台程序,别人的就考虑其他方法吧。

萌面超妹 2022-09-11 09:47:19

ng2+express+jsonp跨域获取数据问题,终于解决了

1、前端代码块

constructor(public jsonp:Jsonp) {
    // 定义服务器地址
    let wikiUrl = 'http://localhost:3000/users';
    // 定义参数
    var params = new URLSearchParams();
    params.set('callback', 'JSONP_CALLBACK');
    // 使用jsonp模块获取express后台返回的jsonp数据
    jsonp.get(wikiUrl, {search: params})
            .map(res=> res.json())
            .subscribe((response) => {
                console.log(response);
            }, (error) => {
                console.error(error);
            });
    }

2、后台代码块

router.get('/', function(req, res, next) {
  res.jsonp({"name": "heping"});
});
冷默言语 2022-09-11 09:47:19

楼主 我今天学习ng2的时候也是遇到 这个jsonp跨域问题 https://segmentfault.com/q/10... 但是我可能了你的 帖子 还是不明白,express不会,有没有纯前端的方法解决 这个跨域问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文