Angular 2 Jsonp Err 200

时间:2016-10-05 06:04:43

标签: angular

使用下面的jsonp调用,我收到错误Response with status: 200 Ok for URL。如果我理解正确,这意味着我的获取请求确实有效。但是,我调用数据的方法没有。您可以在下方或clicking this link找到指向我的数据的链接。

constructor(private jsonp: Jsonp){}
stockrun(){

this.jsonp.get('http://dev.markitondemand.com/MODApis/Api/v2/Quote/jsonp?symbol=AAPL&callback=myRun')
    .map(res => res.json())
    .subscribe((information) =>{
     console.log(information);
    });

}

我在网址中输入myRun的原因是因为在没有回调时数据的组织方式不同,例如在http://dev.markitondemand.com/MODApis/Api/v2/Quote/jsonp?symbol=AAPL中。

我还想补充说,没有myRun我只得到错误200代码。然而,有了它,我也得到cannot find name myRun

2 个答案:

答案 0 :(得分:0)

得到answer from this question。基本上,

var url = 'http://dev.markitondemand.com/MODApis/Api/v2/Quote/jsonp?symbol=AAPL&callback=JSONP_CALLBACK';
this.jsonp.get(url)
.map(res => res.json())
.subscribe(data => console.log(data));

答案 1 :(得分:0)

您的回复不是JSON。它封装在myRun(...)内,所以为了反序列化,你应该调用类似

的内容
this.jsonp.get('http://dev.markitondemand.com/MODApis/Api/v2/Quote/jsonp?symbol=AAPL&callback=myRun')
    .map(res => {
        // Get raw text instead of parsed object.
        let text = res.text();

        // Removing myRun().
        text = text.substring(6, text.length - 1);

        // Return manually parsed response.
        return JSON.parse(text);
    })
    .subscribe((information) =>{
        console.log(information);
    });

删除myRun(和最后)

您必须拨打res.text()而不是res.json(),然后substring结果,然后拨打JSON.parse()