• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

taviroquai

Mais do que uma chamada em ajax

4 mensagens neste tópico

Viva,

Tentei criar um código, apartir do código existente na W3schools, para suportar várias chamadas xmlHttp mas não estou a conseguir...

Tou a usar um arreio para criar varios objectos xmlHttp.

O que tenho é:


var xmlHttp = [];

function GetXmlHttpObject() {
var xmlHttp=null;
try {
	// Firefox, Opera 8.0+, Safari
	xmlHttp=new XMLHttpRequest();
}
catch (e1) {
	//Internet Explorer
	try {
	xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e2) {
		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
}
return xmlHttp;
}

function stateChanged(divNumber) {
if (xmlHttp[divNumber].readyState==4 || xmlHttp[divNumber].readyState=="complete") {
	if (xmlHttp[divNumber].status==200) {// 200 = OK
		document.getElementById('result'+divNumber).innerHTML=xmlHttp[divNumber].responseText;
		alert(xmlHttp.responseText);
	} else {
		alert("Problem retrieving XML data");
	}
} else {
	//alert("xmlHttp object not changed to complete");
	return;
}
}

function showResult(functionName, str, divNumber) { 
var testeObj;
xmlHttp[divNumber]=GetXmlHttpObject();
if (xmlHttp[divNumber]===null) {
	alert ("Este Browser não suporta pedidos XMLHTTP");
	return;
}
str = encodeURI(str);
var url=functionName;
url=url+"?q="+str;
url=url+"&sid="+Math.random();

testeObj = xmlHttp[divNumber];
testeObj.open("GET", url, true);
testeObj.onreadystatechange = stateChanged(divNumber);
testeObj.send(null);
}

Mas estou a obter um erro do browser na linha:

testeObj.send(null);

Parece que esta linha está a alterar o objecto...

testeObj.onreadystatechange = stateChanged(divNumber);

E também reparei que readyState não está a alterar o estado para 4...  :wallbash:

Alguém?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo que se passou comigo, tens de alterar esta linha

testeObj.onreadystatechange = stateChanged(divNumber);

para

testeObj.onreadystatechange = stateChanged;

Depois diz como correu.  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora