Ich habe eine einzige Funktion, die Ajax-Aufrufe zum Abrufen von Daten macht. Das Problem, das ich habe, ist verschachtelte Ajax-Anrufe, bei denen ein Anruf von anderen und $ .wait() abhängt. Then() funktioniert nicht wirklich. Gibt es eine Lösung für mein Problem? Hier ist ein Beispiel ...
function _Ajax(params){
if(params == ''){
alert('no post params');
return;
}
var xdata;
$.ajax({
type: "POST",
url: "/xml/",
async: false,
data: params,
dataType: "xml",
success: function(xml){
xdata = xml;
},
error: function() {
alert("An error occurred while processing XML file. Params:" + objToString(params));
}
});
return xdata;
}
function A(a,b){
_Ajax({a:a,b:b});
}
function B(a,b,c){
_Ajax({a:a,b:b,c:c});
}
function C(a,b){
A(a,b);
B(a,b);
}
function D(a,b){
_Ajax({a:a,b:b});
}
function E(){
$.when(C(a,b)).then{function(){ D(a,b);});
}
Ich habe auch versucht, async auf wahr zu ändern und es scheitert vollständig, ohne irgendwelche Daten zurückzugeben. Dank
Mögliche Duplikat von [Wie Ich gebe die Antwort von einem asynchronen Anruf zurück?] (Http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Liam
'return xdata;' is nicht zur Arbeit gehen – Liam
'_Ajax' sollte das Ergebnis von' $ .ajax' zurückgeben 'A',' B' usw. muss das Ergebnis von '_Ajax' zurückgeben und der' Erfolg' muss außerhalb von all dem passieren. Grundsätzlich lesen Sie die Dupli Cate, es ist alles da – Liam