Precisava fazer várias requisições ajax a vários servidores. Não queria me preocupar com a ordem das requisições, mas pra possibilitar que todas fossem feitas ao mesmo tempo, precisava criar um objeto XmlHttp para cada uma delas (veja
http://www.ibm.com/developerworks/web/library/wa-ajaxintro3/).
Uma solução que estou testando usa closures (veja
http://jibbering.com/faq/notes/closures/), que é diferente do Closure Tools (
https://developers.google.com/closure/compiler/). Ainda estou aprendendo a mexer com isso, e o resultado foi (atualização 7/2/2013: veja este post:
Usando o ajaxStufff):
E o arquivo ajaxStufff.js:
function assoc(xmlHttp, postQueryString, onreadystatechange, action)
{
return (function() {
xmlHttp.onreadystatechange=onreadystatechange;
xmlHttp.open("POST", action, true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", postQueryString.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(postQueryString);
});
}
function obterXHR() {
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch(e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Seu navegador não suporta AJAX!");
return false;
}
}
}
return xmlHttp;
}