1

ajax を使用して Alchemy REST API を呼び出そうとしていますが、以下で説明するインジェクター エラーが発生します。以下は、私の HTML ファイルのコードです。エラーを解決するための提案を探しています。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" ></meta>
<script language="JavaScript" type="text/javascript" src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
</head>
<body>

Alchemy trial
<span id="yammer-login"></span>
<script>
    $.ajax({
        url: 'http://access.alchemyapi.com/calls/url/URLGetRankedKeywords',
        type: 'GET',
        data: 'url=http://yurishelke.weebly.com&apikey=apikey&maxRetrieve=1', // or $('#myform').serializeArray()
        success: function(keyword) { 
            //document.getElementById('yammer-login').innerHTML = keyword;
            console.dir(keyword);
            alert('PUT completed');  
        }

    });
</script>
</body>
</html>

コンソールに次のエラーが表示されます:-

[21:39:07.317] Error: [$injector:unpr] http://errors.angularjs.org/undefined/$injector/unpr?p0=AngularIssuesProvider%20%3C-%20AngularIssues
L/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:6
Xb/l.$injector<@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:32
c@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:29
Xb/r.$injector<@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:32
c@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:29
d@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js:30
Xb/f/<.instantiate@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0
4

1 に答える 1

2

AlchemyAPI が次のような複数の CORS ヘッダーを返す可能性があります。

Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: *

これは実際にはブラウザで次のように解釈されます。

Access-Control-Allow-Origin: *, *

これは標準では無効であり、ブラウザーによって不適切に解釈されます。

それはさておき、おそらく AlchemyAPI を直接叩くべきではありません。代わりに、Web サーバーを使用して API 呼び出しをプロキシし、そのサーバーを AJAX でヒットする必要があります。AJAX 呼び出しを API クライアント側に配置することで、キーを使用するすべての人またはデバイスにキーを配布することになり、Stack Exchange でこの質問を表示するすべての人にキーを配布したことになります。

于 2014-07-23T16:21:17.547 に答える