0

XMLで応答するReSTアプリケーション用のブラウザーベースのJavascriptクライアントを作成しようとしています(したがって、JSONPは問題外のようです)。

を使用してデータを取得しようとしてdojo.io.script.getいますが、コールバック関数に渡されるパラメーターは、応答のXMLデータを取得できないように見えるオブジェクトです。

dojo.io.script.get({url:"http://enterpriseapp.enterprisedomain/path/to/rest/collection",
    load:function (data) {
        // 'data' does not contain the actual response (which is XML)
    }
});

このデータを取得する正しい方法は何ですか?

4

1 に答える 1

0

dojo.io.script.getメソッドは、指定されたWebアドレスから<script>を挿入しますこのスクリプトのデータコンテンツは、ロード関数に渡されます。したがって、コンテンツはJavascriptとして検証する必要があります。XMLをスクリプトタグにロードすることはできません。

XMLをロードする場合は、dojo.xhrGetを使用する必要があります。ただし、これではサードパーティのURLへのリクエストは許可されません。dojo.io.script.getを使用する利点は、それらをロードするページとは異なる発信元アドレスを使用できることです。

dojo.xhrGet({
    handleAs: "xml",
    load: function(dom){
        // do something with the DOM XML object
    },
    error: function(error){
    }
});

参照:dojo.xhrGet Documentation

別のWebサイトからXMLをロードしようとしている場合、それは少し行き詰まりです。送信サーバーにアクセスできる場合は、Access-Control-Allow-Originヘッダーを使用できます。

私が使用した別の解決策は、正しいドメインでXMLをミラーリングするためのプロキシスクリプト(PHPまたは他のサーバー言語)を作成することです。これを行う場合は、サーバーコードがプロキシのために誰かに悪用されないように、適切なチェックを含めるように注意する必要があります。

Access-Control-Allow-Originの詳細については、次のStackoverflowの会話を参照してください。jQueryXML RESTAccess
-Control-Allow-Origin

于 2012-11-08T14:55:23.380 に答える