3

Beanstalk (beanstalkapp.com) API を使用して Web ページにデータを取り込み、SVN にアクセスせずにデータを表示できるようにしようとしています。

私が試してアクセスしようとしているのは、jQuery を介して AJAX リクエストを使用することです。以下コードですが、毎回エラーが出てデータを返せません。

<script type="text/javascript">
$(document).ready(function() {
    var tok = 'username' + ':' + 'password123';
        hash = btoa(tok);
        authInfo = "Basic " + hash;
    $.ajax({
        url: "http://username.beanstalkapp.com/api/changesets.json",
        beforeSend: function (xhr) { xhr.setRequestHeader ("Authorization", authInfo); },
        type: "GET",
        async: false,
        crossDomain: true,
        dataType: "json",
        success:  function(html){
            console.log(html);
        },
        error: function(html){
            console.log('error');
        }
    });
});
</script>

ブラウザー ( http://username.beanstalkapp.com/api/changesets.json ) から直接 URL にアクセスすると、問題なく動作し、json が返されます。ただし、AJAX に返してもらうことはできません。どんな助けでも大歓迎です。ありがとう!

4

3 に答える 3

4

クロスドメインajaxリクエストのプロキシを作成する必要があります。

通常のシナリオは次のようになります。

  1. クライアントはajaxリクエストをサーバーに送信します
  2. サーバーはリクエストを外部/リモートサーバーに転送します
  3. リモートサーバーからの応答を待機しています
  4. リモートサーバーからの応答を解析して処理します
  5. クライアントに応答を送り返す

phpを使用している場合は、curlを使用してリクエストを送信でき、実装は非常に簡単です。私は最近このトピックに関する記事を書きましたhttp://www.svlada.com/proxy-ajax-requests-curl-and-symfony-2/

于 2012-08-14T05:49:28.600 に答える
1

自分以外のドメインからjsonを取得することはできません。これは、 JSONではなくJSONPを使用してそれを克服するための同一生成元ポリシーと呼ばれるセキュリティの問題です。

于 2012-08-14T05:50:15.033 に答える
0

このjsfiddleを確認してください。ユーザー名とパスワードが正しくありません。正しいユーザー名とパスワードを入力して、もう一度確認してください。

于 2012-08-14T05:57:15.510 に答える