Matti Mäkitalo: JQUERY $.ajax

Beitrag lesen

Hi,

function bla(){

var xy = getIt();
  console.log(xy);
}

function getIt(){
  $.ajax({
     ...
  }).done(function(data){
     return data;
  });
}

  
selbst wenn du hier async auf false setzt, liefert getIt nicht data zurück (sondern nur die anonyme Funktion, die du als Event-Handler für das Ereignis "done" übergibst. Eine Möglichkeit wäre (ungetestet!)  
  
~~~javascript
function getIt() {  
  var ret;  
   $.ajax({  
      // …  
      async: false  
   }).done(function(data){  
      ret = data;  
   });  
  return ret;  
}

Ich würde dir aber empfehlen, eher beim asynchronen Zeugs zu bleiben und dich mit dessen Konzepten auseinanderzusetzen:

function bla(){  
  var myDoneHandler = function(xy) {  
   console.log(xy);  
  };  
  getIt(myDoneHandler);  
}  
  
function getIt(handler) {  
  $.ajax({  
   // …  
  }).done(handler);  
}

oder auch eine anonyme Funktion, die du done gibst, welche die Daten aufbereitet und dann deinen Done-Handler (den von bla()) entsprechend aufbereitet.

Bis die Tage,
Matti