1

この特定の REST API を使用した Angularjs と jQuery で深刻な問題が発生しています。私は上記の API と同じドメインに属しておらず、データを取り戻すことができますが、「SyntaxError: 無効なラベル "名前" :{」というエラーが発生します。

$http.get や $.get などを実行すると、10 秒後にタイムアウトになります。ただし、いずれかのライブラリで jsonp を使用すると、データが [ネット] タブに返されることを Firebug で確認できますが、コンソール タブには上記のエラーが表示されます。いくつかの調査を行った後、API (Jive 製品) と、JSON と共に返されるこの特定のテキスト行に問題がある人をたくさん見てきました。応答は次のようになります。

throw 'allowIllegalResourceCall is false.';
{"name":{ "givenName": "xxx"}}

大きな問題は、最初の「スロー」ラインです。その行を削除する方法をたくさん試しましたが、適切な方法が見つかりませんでした。コード サンプルを提供できないことをお詫びしますが、Angularjs または jQuery でこれを機能させる方法があれば、それを使用します。答えが Angularjs インターセプターにあるのか、transformResponse にあるのかはわかりません。

提供できるヘルプをいただければ幸いです。

ありがとうございました

4

1 に答える 1

2

AngularJs を使用すると、http 応答データを変換するメソッドを定義できます (したがって、応答データの最初の行を削除できます)。これは、単一のリクエストに対して行うことも、httpInterceptor を追加することもできます。

単一のリクエスト:

$http.get('...', {
    transformResponse: $http.defaults.transformResponse.unshift(function(data) {
        // Remove first line of response
        data.split("\n").slice(1).join("\n")
    }
});

HttpInterceptor

.config(['$httpProvider', function($httpProvider) {
    $httpProvider.interceptors.push(function() {
      return {
        'request': function(config) {
          config.transformResponse.unshift(function(data) {
            return data.split("\n").slice(1).join("\n")
          })
          return config;
        }
      }
    })
}])

プランカー: http://plnkr.co/edit/6WCxcpmRKxIivl4yK4Fc?p=preview

于 2015-05-30T17:49:27.647 に答える