2

これはStackoverflowに関する私の最初の投稿ですが、何年にもわたって私は頻繁に訪問しています!

ASPで記述された社内の欠陥追跡アプリケーションがあります。関連するすべてのラリーユーザーストーリー情報をサイトの「仕様」セクションにコピーする手動プロセスがあります。JQueryとJSONを使用して、この情報をサイトに動的に表示しようとしています。ASPページで機能させる前に、XAMPPを使用してローカルマシンでテストしています。

JQueryを介してAPIにアクセスしようとすると、Access-Control-Allow-Origin例外が発生します。ロードしようとしているページの例は次のとおりです:https ://rally1.rallydev.com/slm/webservice/1.26/project.js 。

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

<script>
$(document).ready(function(){

    $.getJSON("https://rally1.rallydev.com/slm/webservice/1.26/project.js", 
        function(data) {

            $.each(data.QueryResult.Results, function(i, result) {
            $("<option>").attr("value", result._refObjectName).text(result._refObjectName).appendTo("#dd_ItSel");
            });
        })
        .success(function() {console.log("dd-It-success"); })
        .error(function() { console.log("dd-It-error");})
        .complete(function() { console.log("dd-It-complete"); })
        ;
});
</script>

これは、次のドロップダウンに読み込まれます。

<select name="projectSelect" id="dd_projSel"></select>

Rally APIドキュメントhttps://rally1.rallydev.com/slm/doc/webservice/rest_json.jspのこのページによると、この制限を回避するには、HTTPプロキシを使用するか、JSONPコールバック機能を使用する必要があります。Yahoo APIを自分のページ()に含めて、Rally APIサンプルページに表示されているコードの一部を使用してみましたが、これを機能させることができませんでした。

This page uses the YUI Connect method to submit an asyncrounous request against the JSON REST API. A JavaScript function is used in the request callback to render the object graph below.

var graphContainer = document.getElementById('graph');

var callbacks = {
    success: function(response) {
        drawGraph(document.getElementById('graph'), YAHOO.lang.JSON.parse(response.responseText));
    },
    failure: function() {
         alert('JSON REST API request failed');
         document.getElementById('graph').innerHTML = '';
    }
};

YAHOO.util.Connect.asyncRequest('GET', 'https://rally1.rallydev.com/slm/webservice/1.27/project.js?workspace=https://rally1.rallydev.com/slm/webservice/1.27/workspace/620327365&query=&start=1&pagesize=20', callbacks);

また、ドキュメントに記載されているようにJSONP応答変数を含めようとしましたが、それを機能させることもできませんでした。

プロキシ方式またはJSONP方式のいずれかで成功した人はいますか?JSONPメソッドの方が使いやすいと思います。これは本当ですか?そうでない場合は、誰かがこの使用のためにHTTPプロキシを設定する方法に関するリソースに私を導くのを手伝ってもらえますか?

JSONPメソッドの方が簡単な場合、これを機能させるにはどうすればよいですか?誰かが共有できる実用的な例を持っていますか?

とても長くなってすみません-私が試していることと、どこから情報を入手しているのかを示す方がよいと思いました。

どうもありがとう!

4

1 に答える 1

7

JSONP と jQuery を使用してリクエストを行う方法は次のとおりです。

<script>

    $(document).ready(function(){

        $.ajax({
          url: "https://rally1.rallydev.com/slm/webservice/1.26/project.js",
          dataType: 'jsonp',
          jsonp: 'jsonp',
          success: function(data, textStatus, jqXHR){
            console.log(data);
            //deal with data here
          }
        });

    });

</script>

構成は、dataTypeJSONP を使用するように jQuery に指示します。Rally API は「jsonp」を使用するため、jsonpconfig は、デフォルトの「callback」の代わりに「jsonp」をリクエスト パラメータとして使用するよう jQuery に指示します。

于 2011-10-03T17:53:51.820 に答える