Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

taviroquai

Mais do que uma chamada em ajax

Mensagens Recomendadas

taviroquai    61
taviroquai

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tesla    0
Tesla

Pelo que se passou comigo, tens de alterar esta linha

testeObj.onreadystatechange = stateChanged(divNumber);

para

testeObj.onreadystatechange = stateChanged;

Depois diz como correu.  :)

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


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade