É o seguinte, abaixo está a biblioteca em ajax que estou utilizando, nela tem a opção trataDadosEnquete(); que corresponde ao sistema de enquete, mais eu tenho outros sistemas que quero implementar como por ex. trataDadosComentario() e trataDadosNoticias() no BibliotecaAjax.js.
Neste caso eu rodo todos ao mesmo tempo a partir do onload, como nessa biblioteca têm apenas o trataDadosEnquete(), como faço para implementar nesta biblioteca os outros trataDadosComentario() e trataDadosNoticias()?
trataDadosEnquete() deverá executar quando eu chamar o método requisicaoHTTP("GET","enquete.php",true);
trataDadosComentario() deverá executar quando eu chamar o método requisicaoHTTP("GET","comentario.php",true);
trataDadosNoticias() deverá executar quando eu chamar o método requisicaoHTTP("GET","noticias.php",true);
BibliotecaAjax.js
var ajax;
var dadosUsuario;
var idTimeout;
// ------- cria o objeto e faz a requisição -------
function requisicaoHTTP(tipo,url,assinc){
if(window.XMLHttpRequest){ // Mozilla, Safari,...
ajax = new XMLHttpRequest();
}
else if (window.ActiveXObject){ // IE
ajax = new ActiveXObject("Msxml2.XMLHTTP");
if (!ajax) {
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
}
if(ajax) // iniciou com sucesso
iniciaRequisicao(tipo,url,assinc);
else
alert("Seu navegador não possui suporte a essa aplicação!");
}
// ------- Inicializa o objeto criado e envia os dados (se existirem) -------
function iniciaRequisicao(tipo,url,bool){
ajax.onreadystatechange=trataResposta;
ajax.open(tipo,url,bool);
idTimeout = setTimeout(tempoEsgotado, 10000);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
//ajax.overrideMimeType("text/XML"); /* usado somente no Mozilla */
ajax.send(dadosUsuario);
}
// ------- Inicia requisição com envio de dados -------
function enviaDados(url){
criaQueryString();
requisicaoHTTP("POST",url,true);
}
// ------- Cria a string a ser enviada, formato campo1=valor1&campo2=valor2... -------
function criaQueryString(){
dadosUsuario="";
var frm = document.forms[0];
var numElementos = frm.elements.length;
for(var i = 0; i < numElementos; i++) {
if(i < numElementos-1) {
dadosUsuario += frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value)+"&";
} else {
dadosUsuario += frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value);
}
}
}
// ------- Trata a resposta do servidor -------
function trataResposta(){
if(ajax.readyState == 4){
clearTimeout(idTimeout);
if(ajax.status == 200){
trataDadosEnquete();
} else {
alert("Problema na comunicação com o objeto XMLHttpRequest.");
}
}
}
// ------- Atingiu o tempo limite -------
function tempoEsgotado(){
ajax.abort();
alert("Problema na comunicação com o servidor. Tente acessar mais tarde.");
}Eu consegui fazer isso coloca uma biblioteca para cada trataDados e outra forma que consegui é executa um, e dps que executa esse ai sim executa o outro... mais em questão de desempenho isso não é legal, então gostaria de saber como executar todos ao mesmo tempo.
Caso não tenha sido claro favor avisar que tento explicar melhor.
Edição feita por: MisterFoot, 25/10/2008, 10:04.










