webForumDet fria alternativet

Ajax, en funktion kör en annan..

JavaScript

3 svar · 370 visningar · startad av UrMe

Medlem sedan apr. 2001762 inlägg
Frågan#1

Jag har en Ajax lösning som fungerar så där..

Den triggar "createGroup" och när den är klar ska "getGroups" köras, detta fungerar som det ska i Internet Explorer 7, men funkar inte som det ska i Firefox av någon anledning. I Firefox så visas getGroups() resultat där createGroup() resultatet ska visas.

Så här ser Ajax funktionerna ut:

getGroups körs om createGroup lyckades.

function createGroup() {
	var newgroup = document.getElementById("newgroup").value;
	req.open("GET", "includes/ajax/groups.ajax.php?action=create&newgroup="+escape(newgroup), true);
	req.onreadystatechange = handlecreateGroupResp;
	req.send(null);
}

function handlecreateGroupResp() {
	document.getElementById('newgroup_answer').style.width = '432px';
	document.getElementById('newgroup_answer').style.padding = '10px';
	document.getElementById('newgroup_answer').style.fontSize = '11px';
  if(req.readyState == 4){
    //var response = req.responseText;
    //document.getElementById('loginmsg').innerHTML = response;
	
	 if (req.responseText == "Success!") {
	    document.getElementById('newgroup_answer').style.backgroundColor = '#00ed2d';
		document.getElementById('newgroup_answer').innerHTML = "Den nya gruppen har sparats!";
		document.getElementById("newgroup").value = "";
		getGroups();
	 } else {
		//document.getElementById('loginmsg').style.setProperty("background-color", "#c0c0c0", null);
		document.getElementById('newgroup_answer').style.backgroundColor = '#de0000';
		document.getElementById('newgroup_answer').innerHTML = req.responseText;
		document.getElementById("newgroup").value = "";
	 }

  } else {
		document.getElementById('newgroup_answer').innerHTML = "Skapar gruppen...";
		document.getElementById('newgroup_answer').style.backgroundColor = '#6699cc';
  }
}

function getGroups() {
	req.open("GET", "includes/ajax/groups.ajax.php?action=list", true);
	req.onreadystatechange = handlegetGroupResp;
	req.send(null);
}

function handlegetGroupResp() {
  if(req.readyState == 4){
	document.getElementById('currentgroups_answer').style.backgroundColor = 'transparent';
	document.getElementById('currentgroups_answer').innerHTML = req.responseText;
  } else {
	document.getElementById('currentgroups_answer').style.backgroundColor = 'transparent';
	document.getElementById('currentgroups_answer').innerHTML = "Listar nuvarande grupper...";
	document.getElementById('currentgroups_answer').style.backgroundColor = '#6699cc';
  }
}

Jag är ingen hejare på Javascript men enligt mig borde det där fungera.

Det är en knapp som triggar createGroup() så här:

<input type="submit" value="Spara" name="submit" class="submit" onclick="javascript:createGroup();" />

Vad kan vara fel när det fungerar i IE men inte i Firefox?

Medlem sedan apr. 2001762 inlägg
#2

Duh!

Jag hade glömt att göra en ny

var req2 = createXMLHttpRequest();

och döpa dem till req2 i den andra funktionen, nu fungerar det, vad pinsamt! :r

Medlem sedan juni 20008 205 inlägg
#3

D'oh, missade att frågan var löst :)

Medlem sedan apr. 2001762 inlägg
#4

spango skrev:

D'oh, missade att frågan var löst :)

Jag var snabb att hitta lösningen själv ;)

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)