使用下面的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
。
答案 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()