0

dojoを使用して2つのxhr.getsを次々に実行するにはどうすればよいですか?

私は持っています ....

require(["dojo/_base/xhr", "dojo/dom", "dojo/domReady!"],
function(xhr, dom) {

    // Using xhr.get, as very little information is being sent
    xhr.get({
        // The URL of the request
        url: "inc/etl2json.php?item=Execs",
        // The success callback with result from server
        load: function(execContent) {
            dom.byId("Execs").innerHTML = execContent;
        },
        // The error handler
        error: function() {
            // Do nothing -- keep old content there
        }
    });

});

別のxhr.getを"inc/ etl2json.php?item = Execs"に実行し、それをdom.byId( "Elapsed")。innerHTML=lapsedContent;に割り当てたいと思います。

4

3 に答える 3

1

ネストは簡単な解決策ですが、ほとんどの場合、コードが読み取れなくなります。そのため、@ Ricardoと同じように実行しますが、DojoのDeferred(+ここ)の利点を利用して、チェーンを使用します。

var requestUrl = "inc/etl2json.php?item=Execs";

xhr.get({ url: requestUrl})
    .then(function(results) {
        dom.byId("execs").innerHTML = results;
    })
    .then(function(results) {
        return xhr.get({ url: requestUrl});   
    })
    .then(function(results) {
        dom.byId("elapsed").innerHTML = results;
    }) 

jsFiddleで実際の動作を確認してください:http://jsfiddle.net/phusick/73X88/

于 2012-04-14T09:38:56.963 に答える
1

load関数内でxhr.get()を再度呼び出すだけです。コンテンツが変更されることになっている場合は、最初に取得したものと同じデータを使用できます。

xhr.get({
    load:function(data){
        //use the first data you retrieved
        xhr.get({
            load: function(data2){
             //do what you like with the nuew data
            }
        });
    }
});
于 2012-04-12T21:00:35.263 に答える
0

経過したコンテンツxhrに対して別の呼び出しを追加する必要があると思います。2つの呼び出しの間に関係は見当たらないので、別々にする必要があります。入れ子にする必要はありません。追加するだけ

xhr.get({
        // The URL of the request
        url: "inc/etl2json.php?item=Execs",
        // The success callback with result from server
        load: function(elapsedContent) {
            dom.byId("Elapsed").innerHTML = elapsedContent;
        },
        // The error handler
        error: function() {
            // Do nothing -- keep old content there
        }
    });
于 2012-04-13T15:37:31.520 に答える