まず、AJAXを使用して動作しますが、私はこれらのように、スプリング・ブート、コードを使用してサーバをコード化:私はAngular2とJSONPの応答からの身体データを取得することはできませんが、それは
public class App {
@RequestMapping("/")
@ResponseBody
String home(HttpServletRequest request) {
String aa=request.getParameter("callback");
System.out.println(request.getParameter("callback"));
return aa+"({\"text\":\"hello,world\"})";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(App.class, args);
}}
第二に、私はコード化されましたFRONT-END Angular2と:その後、
export class HomePage implements OnInit{
constructor(private jsonp:Jsonp) {
}
ngOnInit(): void {
this.jsonp.get("http://localhost:8080/callback=JSONP_CALLBACK")
.subscribe(res=>console.log(this.res);
);
}}
、私はNG-サーブでフロントエンドを実行して、コンソールからINFOMATIONました:
を明らかResponse {_body: Object, status: 200, ok: true, statusText: "Ok", headers: Headers…}
、「_body:オブジェクトが」私が欲しいのデータを持っており、実際に、データは次のようになります。
{"text":"hello,world"}
ので、私は、データを取得しようとしたが、観察可能のオペレータが唯一の「購読」これらの方法があります:click here
はので、私はJSONの方法を選択し、しかし、私は、コンソールからこれらを得た:私はすべてメートルをしようとした
function() {
if (typeof this._body === 'string') {
return JSON.parse(/** @type {?} */ (this._body));
}
if (this._body instanceof ArrayBuffer) {
return …
この奇妙なアプローチを除き、身体データをethodが、取得することはできません。もちろん
console.log(res._body.text);
、それはエラーをコンパイルしているが、私は、データを得るか:click here
ときI上記のすべての問題が登場していませんAJAXを使用してこれを試してみました、私は簡単したがって、この
jQuery(document).ready(function(){
$.ajax({
type: "get",
async: false,
url: "http://localhost:8080/",
dataType: "jsonp",
jsonp: "callback",
jsonpCallback:"JSONP_CALLBACK",
success: function(json){
console.log(json.text);
},
error: function(){
alert('fail');
}
});
});
のようなデータを取得することができ、どのように私はrxjsの観測Angular2のあるJSONデータを取得し、またはこれはバグであることができますか?
ああ、かわいいです!ありがとう、そんなに~~しかし、なぜ私は購読で "res.json()"を行うことができないのですか? – stephzcj
あなたは '' .subscribe(res => console.log(res.json())); 'できますが、前のステップで購読して処理するために最終データを送るのがよりクリーンです。通常は、すべてのデータロードロジックをサービスに保持する方がよいでしょう。 Observableインスタンスを返す。コンポーネントでは、単純にサービスメソッドを呼び出し、それが提供するデータにサブスクライブします。したがって、コンポーネント内のデータを処理するのではなく、消費する必要があります。しかし、あなたの場合、あなたはこの呼び出しをコンポーネントにとにかく持っているので、余分なマップステップをスキップして、単にsubscribeで 'res.json()'を使用することができます。 – dfsq
ええと...なぜ私は "res.json()"をやっていけないのか分かりますが、私は "T"を逃しました。もう一度ありがとう~~ – stephzcj