2015-01-04 30 views
13

に力パースない応答私は、私のサーバーで「test.ini」ファイルを持って、次のテキストを含んでいます。私は$httpを経由して、このファイルの内容を取得しようとしている

"[ALL_OFF] 
[ALL_ON] 
" 

var params = { url: 'test.ini'}; 
$http(params).then(
       function (APIResponse) 
        { 
        deferred.resolve(APIResponse.data); 
        }, 
        function (APIResponse) 
        { 
        deferred.reject(APIResponse); 
        }); 

この操作は角例外を得た(にSyntaxError:予期しないトークンA)サービスは、ここに私の機能の一部です。
は、私は角フレームワークファイルを開いた、と私はexeptionが見つかりました:テキストファイルの内容で始まる「[」で終わる「]」は、角度JSONファイルであることを「考える」ので

var defaults = this.defaults = { 
    // transform incoming response data 
    transformResponse: [function(data) { 
     if (isString(data)) { 
     // strip json vulnerability protection prefix 
     data = data.replace(PROTECTION_PREFIX, ''); 
     if (JSON_START.test(data) && JSON_END.test(data)) 
      data = fromJson(data); 
     } 
     return data; 
    }], 

私の質問:

どのように私はに角度は(このチェックを行うことはできません。ここ

は角度コード(行7474 1.2.23バージョンで)ですif (JSON_START.test(data) && JSON_END.test(data)))とではない JSONへのテキスト応答を解析しますか?

+0

'text/plain'を使ってファイルを返すようにしましょう。 – maurycy

答えて

35

あなたは、このことにより、デフォルト値を上書きすることができます:上記の機能は、あなたがこのHTTPリクエストのためにpostetているデフォルトの機能を置き換え

$http({ 
    url: '...', 
    method: 'GET', 
    transformResponse: [function (data) { 
     // Do whatever you want! 
     return data; 
    }] 
}); 

またはthisを読んで、「リクエストごとにデフォルトのトランスフォーメーションを上書きする」と書いています。

+16

変換しない場合は、単に' transformResponse:undefined'を使うだけです。 – dfsq

+1

@ dfsqこれは私が探していた答え - "transformResponse:undefined"、ありがとう! – cheziHoyzer

+0

@ dfsqあなたはその文書から欠けている部分を見つけました。 :D – Superole

7

また、プレーンテキストではなくJSONとしてレスポンスを処理するために、角を強制することができます

$http({ 
    url: '...', 
    method: 'GET', 
    responseType: 'text' 
}); 

これは、角度は、コンテンツの種類を自動検出しようとしないことを確認します。

+0

が動作していないようですが、AngularJS v1.5.2 – elprup

+0

応答ヘッダーの 'content-type'が間違っている(恐らく' application/json')ため、うまくいきません。実際にサーバーが正しい 'content-type'を提供していれば、あなたの設定に' responseType: 'text''を追加する必要はなく、角度はそれを尊重します。 –

+0

@AlirezaMirianそれは本当です。 Angularで追加する唯一の理由は、サーバーによって 'content-type'が提供されていなければJSONとして解析しようとしません。 – Ties