Husk nu at fortælle hvad dit problem eller stopklods er..
Men jeg prøver at gætte. Mit gæt (og nu kan det værre jeg dummer mig fuldstændigt siden du ikke fortæller dit problem) er at din kode kører men du får det samme data modtaget. Skyldneren er ikke en bug men en feature. Eller jo det er også en bug. Bugfeaturen kaldes for en closure og problemet er at i dine handler funktioner opfanger du ikke
i korrekt, men i stedet en reference til
i. Men
i ændrer sig i løkken og ender derfor med at være på yes.length. Så når din knap trykkes skal den sende id som er værdien af variablen i som nu er forkert.
En mulig løsning er at kalde en funktion som så laver en handler funktion til dig. Når du kalder den bliver værdien af
i opfanget som parametre og du kan bruge den i kroppen. Har lavet et eksempel:
- var friendRequestYesNo = function() {
- var yes = document.getElementsByClassName("yes");
- var no = document.getElementsByClassName("no");
-
- function createButtonHandler(id, friendArg) {
- return function () {
- var xmlHttp = getXmlHttp();
- if (xmlHttp.readyState == 0 || xmlHttp.readyState == 4) {
- xmlHttp.open("POST", BASE_PATH + "app/models/friendsModel.php", true);
- xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
- xmlHttp.send("friends=true&addFriend=" + friendArg + "&id=" + id);
- xmlHttp.onreadystatechange = function() {
- if (xmlHttp.readyState == 4) {
- if (friendArg === "yes") {
- var xmlResponse = xmlHttp.responseXML;
- var xmlDocumentElement = xmlResponse.documentElement;
- alert(xmlDocumentElement.childNodes[0].nodeValue);
- }
- }
- }
- }
- }
- }
-
- for (i = 0; i < yes.length; i++) {
- if (yes[i] && no[i]) {
- yes[i].onclick = createButtonHandler(i, "yes");
- no[i].onclick = createButtonHandler(i, "no");
- }
- }
- };
Indlæg senest redigeret d. 29.01.2015 22:57 af Bruger #14645