私はAngular + typescriptで動作しているクライアントを持っており、フロントエンドWeb開発には全く新しいものです。私の予期せぬことにエラーコールバックに行くのはなぜですか?
(私が開発した)php APIに投稿リクエストを送る必要があります。要求はサーバーに正しく到着し、サーバーは応答本体を正しいデータで埋めます(サーバーをデバッグして確認した)。
問題は、サーバが応答すると、角度約束がエラーコールバックを実行し、応答データが空である、ということです。ブラウザで送信されたリクエストをチェックすると、200 OKステータスで応答されたが、空のボディがあると表示されます。
私は、FirefoxのApi-requesterアドオンを使用して同じparamentresで同じAPIエンドポイントを呼び出そうとしましたが、正しいボディでレスポンスを受信しました...なぜ、私のAngularクライアントは成功しませんでしたか?
次のコードは、私のコントローラに対応:
vm.query = {
'tx_filtre':'', 'idioma_filtre':'', 'tipus':'', 'id_dimfisica':'', 'tamPag':15, 'numPag':0
};
this.PropietatsService.getPropietats(vm.query)
.then((response: ng.IHttpPromiseCallbackArg<string>) => {
vm.objResult = JSON.parse(response.data);
vm.propietats = vm.objResult.info;
console.log('rebut', this.propietats);
}, (response: ng.IHttpPromiseCallbackArg<string>) => {
//always executes this error function, why????
vm.objResult = JSON.parse(response.data);
});
そして、これは、サービスに関連するコードです:
getPropietats(query: any): ng.IPromise<ng.IHttpPromiseCallbackArg<string>> {
var config = {
headers : {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
}
};
return this.$http.post("http://localhost:8080/diccionaris/propietat/get",JSON.stringify(query),config);
}
PS:また、サイドノートに、何らかの理由で私のサーバー用私のクライアントで 'Content-Type'というリクエストを 'application/json'に設定した場合、リクエストを処理できません。それが私が 'application/x-www-form-urlencoded'に設定した理由です。
P.P.S:私はあなたがPOSTリクエストで呼び出さget関数を参照してくださいが、私は唯一の私の上司の命令を次れたとき、それは痛い知っている...高度で
ありがとう!
あなたは200を得ていますか? [docs](https://docs.angularjs.org/api/ng/service/$http)によると、ステータスコードが200-299の場合は成功コールバックが呼び出されます。 –
はい、Chrome DevToolsでチェックしました。 [ネットワーク]タブをクリックします。 – Driond