Ajax - Callback in Array speichern
Sebastian
- javascript
Hallo Leute,
ich hab leider kein richtigen Betreff gefunden um das Problem zu beschreiben.
So nun zu meinem Problem, ich habe 2 Funktionen und eine Array. In der Funktion "Init()"
wird die Array mit 2 Spielerdaten gefüllt.
Innerhalb der for schleife wird eine weitere Funktion aufgerufen "getPlayerId()" in der
ein Json String geparst wird. Mir ist leider nicht möglich den Rückgabewert in die Array zu speichern, da er nicht mehr weiss wohin er es abspeichern soll:
"Uncaught TypeError: Cannot read property 'PlayerId' of undefined "
Wie kann ich das Problem lösen? Beschäftige mich mit Javascript noch nicht solange um alle Möglichkeiten vorher auszutesten.
Dann habe ich noch eine Frage. Ist es Möglich das mein Script erst weiter läuft wenn alle "Players" eine Id haben? Da alles Asynchron abläuft, kann es doch passieren das beim nächsten Funktionsaufruf die variable Player[1]["PlayerId"] noch 0 ist und ich somit nicht weiter arbeiten kann.
Vielen Dank
Mfg Sebastian
var Players = new Array("Name1", "Name2");
var Player = new Array (Players.length);
function init()
{
Players = new Array("Tarulis", "B4nsi");
Player = new Array (Players.length);
for (i = 0; i < Players.length; i++)
{
Player[i]["Name"] = Players[i];
Player[i]["PlayerId"] = 0;
getPlayerId(Player[i],function(data) {
Player[i]["PlayerId"] = data; // Uncaught TypeError: Cannot read property 'PlayerId' of undefined
});
}
}
function getPlayerId(player,callback)
{
$.ajax({
url: "https://census.soe.com/get/ps2/character/?name.first=" + player["Name"],
dataType: "jsonp",
success: function(data)
{
player["PlayerId"] = data.character_list[0].id; // Uncaught TypeError: Cannot read property 'PlayerId' of undefined
callback(data.character_list[0].id);
}
});
}
Hallo,
Mir ist leider nicht möglich den Rückgabewert in die Array zu speichern, da er nicht mehr weiss wohin er es abspeichern soll:
Du kannst Dir die im Callback benötigten Werte über Closures sichern, bevor Du die Ajax-Funktion aufrufst. Also Funktionen, die Dir dann - im Callback aufgerufen - nur den Wert der Variablen zurück geben.
Dann habe ich noch eine Frage. Ist es Möglich das mein Script erst weiter läuft wenn alle "Players" eine Id haben?
Frag im Callback ab, ob alle Werte schon vorhanden sind. Nur in dem Fall startest Du dann die weitere Verarbeitung.
Gruß
Stefanie
Hallo,
Frag im Callback ab, ob alle Werte schon vorhanden sind. Nur in dem Fall startest Du dann die weitere Verarbeitung.
oder du arbeitest synchron statt asynchron.
Viele Grüße
Siri
Hallo,
Frag im Callback ab, ob alle Werte schon vorhanden sind. Nur in dem Fall startest Du dann die weitere Verarbeitung.
oder du arbeitest synchron statt asynchron.
Viele Grüße
Siri
Das geht nicht, da der dataType jsonp ist und es dadurch kein synchron zuläst