Archief - Javascript variabele scope problem

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

vikdb

Legacy Member
Onderstaande code returned altijd false terwijl hij eigelijk true zou moeten returnen. Ik doe wss iets fout maar ik zie het niet , kan iemand helpen ? (edit: test = true word wel degelijk uitgevoerd)

Code:
var test = false ; 
   function saveadr(person){ 
      $.ajax({ 
         url: '*linkhere*', 
         type: 'PUT', 
         data: person, 
         contentType: 'application/json; charset=utf-8', 
         dataType: 'text', 
         success: function(result) { 
            if(result == "Ok"){ 
               test = true;                            
            } else {             
               test = true;                
            } 
         } 
      });       
      return test; 
   }

Moto

Legacy Member
return test word eerst gedaan, dan pas test = bla

is een asyn call die ajax dus die word uitgevoerd in een seperate thread
dus de main thread gaat door en doet "return test", de andere thread doet de ajax functie en zet de test-variable

wat te doen is dus ipv test te zetten gewoon return doen

makkelijkste is die ajax functie in een callback te steken

KiPpIe

Legacy Member
Moto zei:
return test word eerst gedaan, dan pas test = bla

is een asyn call die ajax dus die word uitgevoerd in een seperate thread
dus de main thread gaat door en doet "return test", de andere thread doet de ajax functie en zet de test-variable

wat te doen is dus ipv test te zetten gewoon return doen

makkelijkste is die ajax functie in een callback te steken

Waarom de ajax functie in een callback steken als deze zelf al een callback oproept (success)?

Albireo

Legacy Member
De optie async: false toevoegen aan je ajax-call en dan wordt die synchroon uitgevoerd waardoor die return test zal doen wat je verwacht.

Moto

Legacy Member
Waarom de ajax functie in een callback steken als deze zelf al een callback oproept
Waarom niet? als ge meerdere xml files moet lezen kunt ge makkelijk dat in een aparte functie steken waar met al de properties + error handling, waardoor uw code overzichtelijker blijft

De optie async: false toevoegen aan je ajax-call en dan wordt die synchroon uitgevoerd waardoor die return test zal doen wat je verwacht.
De toekomst is responsive shit met async : true
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan