3

DOJO AJAX を使用して REST サーバーにリクエストを送信しようとしていますが、結果として null オブジェクトが返されます (コンソール):

クリックした = クリック clientX=34, clientY=13 サーバーからロードされた JSON: null

これが私のコードです:

// JavaScript Document

// load requirements for declarative widgets in page content
require([   "dojo/parser",
        "dojo/dom",
        "dojo/domReady!",
        "dijit/form/Button"
        ]);


// Start initializing
dojo.ready(function(){

dojo.connect (
                aBut1,
                "onClick",
                function(e){

                    console.log('You CLICKED = ', e);
                    dojo.xhrGet({
                                // The URL of the request
                                url: "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/find",
                                // Handle the result as JSON data
                                handleAs: "json",
                                // content
                                content: {f:"json", searchText:"new", contains:"true", searchFields:"state_new", layers:"2", returnGeometry:"false" },
                                // The success handler
                                load: function(jsonData) {
                                    // Create a local var to append content to
                                    console.info("JSON loaded from server:  ", jsonData);

                                },
                                // The error handler
                                error: function() {
                                    console.log('JSON log Error');
                                }
                            });

                });


}); // End dojo.ready

これは私が使用したい REST URL です。

http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/find?searchText=new&contains=true&searchFields=state_name&sr=&layers=2&returnGeometry=false&f=json

この URL の結果を json ファイルに保存すると、AJAX はそのファイルを読み取り、4 つの項目を持つオブジェクトを返します。REST URL を使用していません。

ありがとうございました

4

2 に答える 2

1

dojo.xhrGetを使用して別のドメインにアクセスしようとしていると思いますが、アクセスできません。

制限事項

dojo.xhrGet(および同じ行の他の関数:dojo.xhrPost、dojo.xhrDelete、dojo.xhrPut)は、ブラウザーの「同じドメイン」セキュリティポリシーに拘束されます。つまり、HTMLページを提供したのと同じサーバーへの接続しか確立できません。このAPIを使用して、ページを発信したサーバー以外のサーバーと通信する場合は、発信元のサーバーでプロキシを使用して、リクエストを転送する必要があります。同じドメイン制限を回避するための他の唯一の解決策は、dojo.io.scriptなどの代替IOメソッドを使用することです。

http://dojotoolkit.org/reference-guide/1.7/dojo/xhrGet.html

于 2012-07-13T14:38:09.617 に答える
0

それはあまり続きません。を使用curlしてその URL にリクエストを送信するとどうなりますか?

Dojo 1.7 を使用していますか? もしそうなら、Ajax クイックスタートのドキュメントが役立つかもしれません (AMD スタイルに直接リンクしました。可能であれば、AMD スタイルを使用する必要があるためです)。には、より詳細なドキュメントxhrGetもあります。

于 2012-07-13T14:21:00.600 に答える