Moin,
Was mache ich falsch?
du verlierst den Überblick über den zeitlichen Ablauf sowie die Übergabe von Daten.
var myList = getList();
//Ausgabe "undefined"
alert(myList);
Deine Funktion getList() setzt einen asynchronen HTTP-Request ab und kehrt dann sofort wieder zurück. In dem Moment, wo das alert() ausgeführt wird, ist die Antwort vom noch lange nicht eingetroffen.
Und selbst wenn sie es wäre: getList() selbst gibt nichts zurück, myList bleibt also undefined. Denn \_wenn\_ endlich die sehnlich erwartete Antwort vom Server kommt, dann ...
> ~~~javascript
function getList(){
> $.ajax({
> type: "GET",
> url: "test.php",
> data: "action=getOrderList&date=2013-03-31",
> success: function(data){
> var json = $.parseJSON(data);
> alert(json);
> return json;
> }
> });
> }
... wird zwar die Callback-Funktion data() innerhalb des AJAX-Objekts aufgerufen - aber was macht die mit den Daten? Analysieren, umwandeln, mit alert() anzeigen, und dann mit return zurückgeben. Und an wen? Diese Funktion wird als Callback asynchron aufgerufen wie ein klassischer JS-Eventhandler, ein Funktionsergebnis ist hier nicht vorgesehen.
Der ajax Teil scheint zu funktionieren. Das zuerst aufgerufenen alert (innerhalb der Funktion) gibt "[object Object], [object Object], [object Object]..." aus, das andere "undefined".
In dieser Reihenfolge?? Ich hätte es umgekehrt erwartet. Das würde ja darauf hindeuten, dass dein AJAX-Request doch synchron abläuft. Bleibt aber immer noch das Problem, dass die empfangenen Daten (json) im Callback nicht aus der Funktion getList() zurückgeliefert werden.
Ciao,
Martin
Niemand ist überflüssig: Er kann immer noch als schlechtes Beispiel dienen.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(