对于我的实习,我被要求开发基于该网站(www.claroline.net)的移动应用程序。我必须使用的技术是Nativescript与Angular 2的结合。我设法实现了登录功能,因此网站的用户现在可以在应用程序上登录。
然后我必须能够在应用程序上获得网站的通知。一开始我只想在JSON数组中显示通知。我已经有了获取JSON数组的URL(get请求可以在浏览器上运行)但是当我从移动应用程序执行此操作时,我收到500错误。
然后我听说JSONP可以帮助我解决我的问题。显然,有几件事情要做: - 在根组件中导入JSONP_PROVIDERS并引导它 - 在要进行Jsonp调用的组件中导入Jsonp - 在网址
中添加回调参数我错过了什么吗?因为即使我做了所有这些,我在控制台中出现错误:“ReferenceError:文档未定义”在某些Javascript文件中这很奇怪,因为我在Typescript中编码,没有变量称为文档。
答案 0 :(得分:3)
以下是在Angular2中使用JSONP支持的方法。
在调用JSONP_PROVIDERS
函数时注册bootstrap
后:
import {bootstrap} from 'angular2/platform/browser'
import {JSONP_PROVIDERS} from 'angular2/http'
import {AppComponent} from './app.component'
bootstrap(AppComponent, [ JSONP_PROVIDERS ]);
然后,您可以使用从构造函数中注入的Jsonp
类的实例来执行请求:
import {Component} from 'angular2/core';
import {Jsonp} from 'angular2/http';
@Component({
selector: 'my-app',
template: `
<div>
Result: {{result | json}}
</div>
`
})
export class AppComponent {
constructor(jsonp:Jsonp) {
var url = 'https://...&c=JSONP_CALLBACK';
jsonp.request(url, { method: 'Get' })
.subscribe((res) => {
this.result = res.json()
});
}
}
在您的情况下,c
参数可以有其他名称,但您需要在其中设置JSONP_CALLBACK
值。
请参阅此plunkr:http://plnkr.co/edit/dqreqBL6kyNkR8Z2wgGR?p=preview