web-dev-qa-db-ja.com

「Uncaught SyntaxError:Unexpected token:」を返すJsonP AngularJS-routingnumbers.info

私はこの質問をばかげた量で調査しましたが、誰かが間違っていることを診断するのを手伝ってくれることを願っています。

私はすでに次のSOの質問を見てみました: (SOは評判のために2つ以上のリンクを投稿させないので、パスを含めただけです)

  1. questions/16344933/angularjs-jsonp-not-working/16352746#16352746
  2. questions/19269153/jsonp-request-in-angularjs-doesnt-work-like-in-jquery
  3. questions/19669044/angularjs-getting-syntax-error-in-returned-json-from-http-jsonp

他の多くの中で......

私が試したもの: 私は追加しました &callback = JSON_CALLBACK URLの最後まで。次のような構成設定を変更しました responseType: 'JSON'。また、http.jsonpリクエストを複数回再配置して、それがプログラム/テキストのものではないことを確認しました(http({})&http.jsonp

これが私がやろうとしていることです: から情報を取得する routingnumbers.info/api/ angular jsonpリクエストを使用します(サーバーはCORSを許可しません)。jQueryでリクエストを正常に作成できますが、angularで正常に作成できません。

対応するテストフィドルは次のとおりです。 http://jsfiddle.net/dqcpa/14/

ご覧のとおり、次の2つのエラーが表示されます。

  1. スクリプトとして解釈されたが、MIMEタイプtext/plainで転送されたリソース: " https://routingnumbers.herokuapp.com/api/data.json?rn=071000013&callback=angular.callbacks._ "。 angular.min.js:97
  2. Uncaught SyntaxError:予期しないトークン:

ただし、chrome devtools-NETWORKで応答を確認する場合、正しいです: 私はjsonpがjsonpfunction({"MyJson": "Data"})の内部で応答を返すことを知っていますが、それがハングアップする場所です。

元のコードは次のとおりです。

//$scope.number = '071000013';
var routingApiUrl = 'https://routingnumbers.herokuapp.com/api/data.json?rn=' + $scope.number;
$http({
    method: 'jsonp',
    url: routingApiUrl + '&callback=JSON_CALLBACK',
    responseType: "json"
}).
success(function(data){
    console.log('Success: ' + data);
}).
error(function(data){
    console.log('Error: ' + data);
});

誰でもこのAPIをAngularで使用しましたか?ヘッダーを変更するためにできること(jquery以外)があるかもしれないと思っていますが、情報を見つけることができませんでした。また、サーバーの問題である可能性もあると考えています(ただし、jqueryで正常に動作している場合、それは問題ではありません)。たぶん、これはHTTPSで何かかもしれません

TL:DR -Angular JSONPリクエストは機能しませんが、同じURLでjQuery JSONPリクエストは機能します。上記のコードを参照すると、何が欠けていますか?

どんな助けも素晴らしいでしょう!

編集: いくつかの句読点とか。

18
dannypaz

この質問に応じて: ncaught SyntaxError:Unexpected token: サーバーサイドjson呼び出しの周りにangular.callbacks._0 (JSON)を追加してみてください。それは私のために働いた

これはプランカーでした http://plnkr.co/edit/oX2UQRBA41FIHpwAP6AA

6
Raymond Ativie