Ich habe ein Problem beim Zurückgeben von Daten an die Funktion, die ich zurückgeben möchte. Code unten:Wie gibt man Daten an die ursprüngliche Aufruferfunktion in Javascript zurück?
function ioServer(request_data, callback)
{
$.ajax({
cache: false,
data: "request=" + request_data,
dataType: "json",
error: function(XMLHttpRequest, textStatus, errorThrown){},
success: function(response_data, textStatus){
callback(response_data);
},
timeout: 5000,
type: "POST",
url: "/portal/index.php/async"
});
}
function processRequest(command, item, properties)
{
var request = {};
request.command = command;
request.item = item;
request.properties = properties;
var toServer = JSON.stringify(request);
var id = ioServer(toServer, processResponse);
return id;
}
function processResponse(fromServer)
{
if (fromServer.response == 1)
{
return fromServer.id;
}
}
Ich rufe dieses Stück Code auf, indem ich die processRequest Funktion in einer anderen Funktion aufruft. Senden der Anfrage und Abrufen der Antwort funktioniert gut. Allerdings muss ich einen Wert "ID" aus der Antwort zurück an die ProcessRequest-Funktion zurückgeben, so dass es wiederum diesen Wert an seinen Aufrufer zurückgeben kann. Soweit ich dem folgen kann, kehrt die Rückgabe in processResponse zu $ .ajax zurück, aber ich brauche sie, um weiter zu processRequest zurückzukehren.
BTW Die if-Anweisung in processResponse bezieht sich auf einen Wert, der vom serverseitigen PHP-Skript festgelegt wurde, um festzustellen, ob die Anforderung zulässig war (wenn z. B. der Benutzer nicht angemeldet war, wäre fromServer.response 0). Es hat nichts mit den Erfolgs-/Fehlerroutinen des $ .ajax-Objekts zu tun.
Vielen Dank für die Hilfe.
@Jani: Danke für die Antwort, aber könnten Sie ein bisschen mehr klären? Die Funktion, wo ‚id‘ benötigt wird, hat den folgenden Code:
$(#tabs).tabs('add', '#tab-' + id, 'New tab');
Sie sagen, ich sollte versuchen, dieses Stück Code in der Process Funktion auszuführen? Weil ich das nicht beabsichtigte; Diese Funktion soll eine Allzwecklösung sein, um den Zustand serverseitig zu erhalten. Deshalb habe ich es vermieden, diesen Code dort anzubringen.
Ja, danke für die ausdrückliche Klärung der Verwendung! –
Und eine Abstimmung für die tolle Klärung ... –