/ / dojo.xhrGetまたはdojo.xhrPost - dojo

dojo.xhrGetまたはdojo.xhrPost - dojo

私はこれで非常に新しい、実際にはこれは私の最初のDojoの試みです。私はウェブサイトからデータを取得しようとしています:

<script
text="text/javascript"
src="http://o.aolcdn.com/dojo/1.3/dojo/dojo.xd.js"
djConfig="parseOnLoad:true,isDebug:true"
></script>

<script type="text/javascript">
//How are we supposed to know what else to include in the dojo thing?  like query?
dojo.addOnLoad(function(){
console.log("hi");
dojo.xhrPost({
url: "http://www.scrapbookingsuppliesrus.com/catalog/layout", //who knows how to set relative urls?
handleAs: "json", //get json data from server
load: function(response, ioArgs){
console.log("got");
console.log(response); //helps with the debugging
return response;  //that way goods should be a very large array of the data we want
},
error: function(response, ioArgs){
console.log("nope didn"t make it", response+" "+ioArgs); //helps with the debugging
return response; //who knows what this does
} //last item, thus no extra comma
});
});
</script>

しかし、何も起こりません。 私がそれをしている間、レスポンスとioArgsの変数は正確に何ですか?私は、魔法のように、私が推測する要求に対する応答は、すでに特別に定義されています。しかし、誰が知っている。さらに、すべての試行の後、ロードまたはエラーで何かを引き起こすと思ったが、悲しいかなか。 私は禁止されたU​​RIに行くというエラーがありましたが、火かき棒はなぜそれが壊れていたかを伝えることが不可能な非常に大きな道場のスクリプトを参照します。あなたの残りの部分はどのような環境で開発されていますか?

回答:

回答№1は4

さて、いくつかの問題があります。

非常に簡単なものから始めましょう。

開発中の場合、使用されているDojoライブラリーのパスに.uncompressed.jsを追加することで、「非圧縮」バージョンのDojoを使用することができます。

http://o.aolcdn.com/dojo/1.3/dojo/dojo.xd.js.uncompressed.js

これにより、Dojoの中核にある場合、何が壊れているかがわかりやすくなります。

次に、djConfigパラメーター。 Dojoは文字列を処理できますが、伝統的にはオブジェクトで定義されているため、Dojoライブラリを組み込んだら、

<script src="path to dojo"></script>

新しいスクリプトブロックを開始し、そこにdjConfigオブジェクトを定義します:

<script>
djConfig = {
parseOnLoad: true,
isDebug: true
};
</script>

次に最も簡単なのは、私はIntelliJ JIDEAを使って開発しています。Dojoのコード・イン・センスが組み込まれているので、人生をはるかに簡単にします。そうでなければ、標準パッケージ、Firefox + Firebug。

複雑なもの:

あなたがデータを要求しているようです。XHRメソッドを使用している場合は、セキュリティエラーが発生していない場合は、アクセスするスクリプトとデータが同じドメインに存在する必要があることを意味していることをご存じでしょうか。どのようにこれを解決することができますか? Dojoはdojo.io.script.get機能を介してサポートされているクロスドメイン・スクリプトと呼ばれる手法を使用します。

より複雑なもの:

Dojoは、 "Deferred"と呼ばれるもので動作します。オブジェクト。これは、オブジェクトが作成されるとすぐにリクエストが出てこないことを意味し、出て行くように要求したときに出て行きます。つまり、Deferredのコンセプトです。コードブロックの実行を延期します。後の時間に。あなたのケースでこの問題が解決される方法は、次のようなものです。

var deferred = dojo.xhrPost({
url: "http://www.scrapbookingsuppliesrus.com/catalog/layout", //who knows how to set relative urls?
handleAs: "json" //get json data from server
});

if(deferred) {
deferred.addCallback(function(response){
console.log("got");
console.log(response); //helps with the debugging
return response;  //that way goods should be a very large array of the data we want
});
deferred.addErrback(function(response){
console.log("nope didn"t make it", response+" "+ioArgs); //helps with the debugging
return response; //who knows what this does
});
}

そして、これは今すぐうまくいくはずです。

個人的なメモとして、私はXHRを使用することをお勧めしませんが、むしろ長期的には移植性が高いdojo.io.script.get方法論を使用します。


回答№2の場合は1

そこにあなたのコードのいくつかの非常に基本的なエラーがあります。

<script ... djConfig="parseOnLoad:true,isDebug:true"/></script>

  • ここでは、短い形式のscriptタグを使用します /> (これは禁止されています) そして 同じことがクローズを含む </script> あまりにも。

console.log("hi")

  • ステートメントの最後にセミコロンがありません。

あなたはからのデータを読み込もうとします http://www.scrapbookingsuppliesrus.com/catalog/layout あなたのスクリプトはそのドメインでも動作していますか?それ以外のCrossdomain-Ajax(google it)のセキュリティ制限は、データのロードを妨げます。


回答№3の場合は1

この質問は道場の興味のあるリストでも尋ねられました。質問にはいくつかの回答があります そのリストに.


回答№4の場合は1

あなたのページがから提供されている場合 www.scrapbookingsuppliesrus.comdjConfigを宣言すると、xhrGetへの引数にloadとerrorを指定するのは正しいです。あなたは掘り下げてデバッグするつもりです。

Firebugのコンソールウィンドウを見てください。 リクエストとレスポンスのHTTPヘッダーを含むGETリクエストとレスポンステキストが表示されます。あなたがそれを見ないなら、あなたのonLoad関数が呼び出される前に、何か他のことが間違っていると思われます。私はその上にconsole.logを投げます。 onLoad関数が呼び出されていない場合は、[スクリプト]タブの小さな下向き矢印をクリックし、[すべてのエラーでブレーク]

どのような応答と ioArgs あります。

Response まあ、レスポンスです。 要求が成功した場合は、JSONオブジェクト(またはXML DOMオブジェクト、HTML DOMオブジェクト、またはhandleAsに応じたテキスト)になります。要求が失敗した場合は、エラーに関する詳細を含むオブジェクトが含まれます。

ioArgs xhr要求に関する低レベルの詳細のスルーを含むオブジェクトです。私は、xhrGetによって返された遅延にコールバックを付けると、

var dfd = dojo.xhrGet(args);
dfd.addCallbacks(function(response) {...}, function(error){...});

コールバックは渡されません ioArgs 引数、ちょうど response (またはエラー)。

dojocampus.org 公式の道場ドキュメンテーションサイトであり、多くの詳細と例が含まれています。 Dojo:The Definitive Guide 〜から〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜


回答№5の場合は0

まず、基本から始めましょう。すべての機能を追加することができます。

Ajaxを実装するためにのみ必要です(Dojoを活用する):

function sendData(dataToPost) {
dojo.xhrPost({
url: "http://myUrl.html",
postData: "data="+dataToPost,
handleAs: "text",
load: function(text){
getData(text);
},
error: function(error){
alert(error);
}
});
}

これで、 "getData"関数でデータを使用することができます

function getData(text){
myVariable = text;
}

多くのチュートリアルを見て、それがどのように実装されているかを見ることができます。 この 私が見つけた最も完全な例です。実装された方法とすべてのコードが利用可能であることがわかります。 http://www.ibm.com/developerworks/java/library/j-hangman-app/index.html