2012-04-12 4 views
0

Wie mache ich zwei xhr.gets nacheinander mit Dojo?mehrere xhr.get s mit Dojo

Ich habe ....

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 
     } 
    }); 

}); 

würde Ich mag eine andere xhr.get zu "inc/etl2json.php? Item = Execs" und weisen es dom.byId tun (“ Verstrichen "). InnerHTML = elipsedContent;

Antwort

1

rufen Sie einfach wieder xhr.get() innerhalb der Ladefunktion, dass auch wenn der Inhalt sich ändern soll, sonst könnten Sie einfach die gleichen Daten verwenden, das erste Mal abgerufen:

xhr.get({ 
    load:function(data){ 
     //use the first data you retrieved 
     xhr.get({ 
      load: function(data2){ 
      //do what you like with the nuew data 
      } 
     }); 
    } 
}); 
0

Ich denke, Sie sollten einen weiteren xhr Anruf für den elapsedContent hinzufügen. Ich sehe keine Beziehung zwischen den beiden Anrufen, also sollten Sie sie trennen. Das Verschachteln eines anderen ist nicht notwendig. fügen Sie einfach

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 
     } 
    }); 
1

Obwohl Verschachtelung eine einfache Lösung ist es fast immer zu nicht lesbaren Code führt, so würde ich das gleiche tun wie @Ricardo tat, sondern nutzen den Vorteil des Dojos Deferred (+ here) und beschäftigen Verkettungs:

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; 
    }) 

sehen sie in Aktion bei jsFiddle: http://jsfiddle.net/phusick/73X88/