0
        require(["dojo/ready", "dojo/_base/declare", "dojo/on", "dojo/date/locale", "dojo/parser", "dojo/date", "dojo/_base/lang",
                "dojo/dom", "dojo/dom-construct", "dojo/dom-class", "dojo/_base/window",
                "dijit/registry", "dojo/query", "dojox/calendar/MonthColumnView", "dojox/calendar/Touch",
                "dojox/calendar/MobileVerticalRenderer", "dojox/calendar/time", "dojo/store/Memory", "dojo/store/Observable",
                 "dojo/_base/fx"],
            function(ready, declare, on, locale, parser, date, lang, dom, domConstruct, domClass, win, registry, query,
                MonthColumnView, CalendarTouch, VerticalRenderer, time, Memory, Observable, fx){
                ready(function(){                       
                    resultat="";
                    var xhr = new XMLHttpRequest ();
                    xhr.onreadystatechange = function(){if(xhr.readyState == 4 && xhr.status == 200){resultat = xhr.responseText;alert("resultat1="+resultat);}}
                    xhr.open("GET","reservations.php",true);
                    xhr.send();
                    alert("resultat2 ="+resultat);
                    var someData= resultat;
                    alert("someData = "+someData);

                    // Calendar creation & configuration

                    monthView = declare([MonthColumnView, CalendarTouch])({
                        store: new Observable(new Memory({data: someData})),
                        verticalRenderer: VerticalRenderer,
                        columnCount: 3                           
                    }, "calendarNode");

                    // Events management

                    fx.fadeOut({
                        node:"loadingPanel",
                        onEnd: function(node){
                            node.parentNode.removeChild(node)
                        }}).play(500);
                });
        });

result:

resultat1=[{summary:"Box2",startTime:new Date(2015,08,20),endTime:new Date(2015,08,25)},{summary:"Box2",startTime:new Date(2015,08,05),endTime:new Date(2015,08,20)},{summary:"Box10",startTime:new Date(2015,08,12),endTime:new Date(2015,09,17)},{summary:"Box8",startTime:new Date(2015,08,28),endTime:new Date(2015,09,02)}];
resultat2 = nothing

someData give resultat1, but nothing more after in function. any idea ?

Felix Kling
  • 795,719
  • 175
  • 1,089
  • 1,143
  • http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-call Your code finishes running before the server responds, so resultat2 will always be undefined due to async. – Shilly Aug 28 '15 at 15:14

1 Answers1

0

You use dojo, use it entirely. There a request class, which is really easy to use (Integrated Promise system ) .

"dojo/request"

You can use it like this:

request("reservations.php").then(function(data){
  // do something with handled data
}, function(err){
  // handle an error condition
}, function(evt){
  // handle a progress event
});

(Doc extracted from here: http://dojotoolkit.org/reference-guide/1.10/dojo/request.html )

Superdrac
  • 1,208
  • 17
  • 29