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

Sign in to follow this  
taviroquai

Mais do que uma chamada em ajax

Recommended Posts

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

Share this post


Link to post
Share on other sites
Tesla

Pelo que se passou comigo, tens de alterar esta linha

testeObj.onreadystatechange = stateChanged(divNumber);

para

testeObj.onreadystatechange = stateChanged;

Depois diz como correu.  :)


Assinatura editada pelo staff, por favor consulte as regras.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.