いくつかのAPIに対してGETリクエストを行うために簡単なAngularコードを書きましたが、それは必ずしも機能していません。たとえば、私がリクエストをするときAngularJS get request fail
https://api.ofx.com/PublicSite.ApiService/OFX/spotrate/Individual/EUR/USD/10000?format=json
私のコードは完全に動作します。
しかし、コードを同じコードを使用して
にリクエストを作ることは動作しません。私はJSONPの使用に出くわしたいくつかの検索を行った後、今
"SyntaxError: JSON.parse: unexpected end of data at line 1".
:応答を検査する際に、私は次のエラーメッセージが表示されます。そこで、私は$ http.jsonp ... を使用してコードを変更し、 "&コールバック= JSON_CALLBACK"を追加しました。私は(火かき棒でブラウザで)私の応答を確認し、JSONデータを正常に受信しました。しかし、私のAngularcodeはまだ私にエラーを投げ、それは私のための応答データを取得しません。
(ブラウザのURLにアクセスしたときにも、私はいつもJSONデータを取得します)。
私はangularJSにはかなり新しく、昨日JSONPメソッドに遭遇しました。 私は、サーバーが期待通りのフォーマットを返さないと思います(コールバック名なしで普通のJSONを返します)。そのために私のコードがエラーを投げていますか?サーバーがJSONPをまったく使用していない/許可していない可能性がありますか?しかし、どうして私は正しい応答を得ているように見え、通常のGET要求を使用していないのでしょうか?
マイコード:
var frankComparesApp = angular.module('frankComparesApp', []);
frankComparesApp.controller('frankComparesCtrl', function($scope, $http) {
$http.get('currency.json').then(function successCallback(response) {
$scope.currencyOptions = response.data;
$scope.choice = null;
}, function errorCall (response) {
// Function for handling failure.
$scope.currencyOptions=[];
}); // End of http.get
$scope.startComparing = function() {
$scope.ofxURL = 'https://www.fcexchange.com/umbraco/api/CurrencyExchangeRateApi/GetRate?callback=JSON_CALLBACK&from=EUR&to=GBP';
$http.jsonp($scope.ofxURL).then(function successCallback(response) {
$scope.answer = response.data;
}, function errorCall (response) {
$scope.answer = "fail";
}); // End of http.get
}; // End of startComparing();
}); // End of frankComparesCtrl
あなたは私の答えを読みましたか? plunkrは問題なく動作しています。 CORSの問題のために失敗した要求です。 http://imgur.com/FP8dRpk –
ご返信ありがとうございます。しかし、私はすでに私の最初の投稿に述べられているように、これを認識していました。だから私は私のexamplecodeのようなgetの代わりにJSONPを使用しています。 plunkrの例を編集し、jsonp(+ paramsに 'JSON_CALLBACK'コールバックを追加)を使用すると、devtoolskitで見たときにJSONで要求された応答が返されることがわかります。それはjavascript jsonpでラップされていないので、おそらくエラーコードですが、私は応答を戻しているのでJSONだけを取得する方法があります。ちょうど私のコードにそれをプッシュするためにいくつかの方法が必要です:) – Jordan
あなたは正しいです。これをチェックしてください:http://stackoverflow.com/a/26745389/2652883 これは有効なJSONPレスポンスです:https://angularjs.org/greet.php?callback=JSON_CALLBACK&name=Super%20Hero –