Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rui Magalhaes

Fazer varias chamadas assincronas em AJAX

Recommended Posts

Ola pessoal.

 

No site que estou construindo, uso AJAX para carregar conteudos em varios DIV's.

Sobre o AJAX, tenho o seguinte arquivo:

 

ajax.js

// Inicializador Ajax
function ajax() {
};

// Método iniciar
ajax.prototype.iniciar = function() {
// instanciando o objeto em cada navegador
	try {
		this.xmlhttp = new XMLHttpRequest();
	}
	catch(ee) {
		try {
			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e) {
			try {
				this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(E) {
				this.xmlhttp = false;
			}
		}
	}
	return true;
}


// Metodo Ocupado
ajax.prototype.ocupado = function() {
	estadoAtual = this.xmlhttp.readyState;
	return (estadoAtual && (estadoAtual < 4));
}

// Metodo Processa
ajax.prototype.processa = function() {
	if (this.xmlhttp.readyState == 4 && this.xmlhttp.status == 200) {
		return true;
	}
}

// Metodo que faz as requisições web
ajax.prototype.enviar = function(url, metodo, modo) {
	// se nao estiver iniciardo vai iniciar dae...
	if(!this.xmlhttp) {
		this.iniciar();
	}
	// se nao estiver ocupado
	if(!this.ocupado()) {
		// se for metodo GET
		if(metodo == "GET") {
			this.xmlhttp.open("GET", url, modo);
			this.xmlhttp.send(null);
		}
		else {
			// se for post
			this.xmlhttp.open("POST", url, modo);
			this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
			this.xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
			this.xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
			this.xmlhttp.setRequestHeader("Pragma", "no-cache");
			this.xmlhttp.send(url);
		}
		if(this.processa) {
			// recebe o resultado da pagina... php
			return unescape(this.xmlhttp.responseText.replace(/\+/g," "));
		}
	}
	return false;
}

A questão é que nao estou conseguindo fazer varias chamadas assincronas. Ou seja, tenho uma chamada assincrona para carregar o conteudo de um DIV e outra para carregar outro DIV diferente.

Para efectuar as chamadas, tenho o seguinte codigo:

...
var objAJAX=new ajax();
var strHTML1="";
var strHTML2="";

//Carrega o DIV divAreaSubMenu
document.getElementById("divAreaSubMenu").innerHTML='<div><IMG SRC="imagens/preloader3.gif" BORDER="0"></div>';
strHTML1=objAJAX.enviar("funcoes.php?blnPagSubMenu=1","GET",true);
document.getElementById("divAreaSubMenu").innerHTML=strHTML1;

//Carrega o DIV divAreaInfo
document.getElementById("divAreaInfo").innerHTML='<div><IMG SRC="imagens/preloader3.gif" BORDER="0"></div>';
strHTML2=objAJAX.enviar("funcoes.php?blnPagSubMenu=0","GET",true);
document.getElementById("divAreaInfo").innerHTML=strHTML2;
...

Ao correr o codigo desta forma, o browser dá um erro de JS que diz: "Os dados necessários para concluir esta operação ainda não estão disponíveis."

Ja experimentei usando 2 objectos do tipo ajax (objAJAX1 e objAJAX2) e nada...

 

Será que alguem me pode ajudar??

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você é um cara de sorte

Aqui tem uma função que serve exatamente pro que você quer. A função é a ajaxGet, do Micox, que faz várias requisições só chamando ela, sem declarar variáveis, objetos, nada. Ela só tem 3 parâmetros: ajaxGet(url_destino, elemento_retorno, carregando_true_OR_false)

 

Se vocÊ preferir enviar os dados de um formulário via POST automaticamente, tente a função ajaxPost nesse endereço.

Ele também recebe 3 parâmetros: ajaxPost(nome_form, elemento_retorno, carregando_true_OR_false). Quando você especifica o nome do form ele pega todos os elementos dele e os prepara automaticamente pra enviar via POST. É muito massa.

 

Nesse mesmo post, estamos criando uma mais poderosa que vai unir as duas. Está quase concluída.

 

Té mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

cria uma função chamada "inicio()"...

dentro dela você coloca todas as chamadas que você quer...

depois você chama ela dentro da tag <body> no evento onLoad...

<body onLoad="inicio()">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rui Magalhaes, você criou três tópicos para fazer a mesma pergunta. Mesclei os dois que possuiam respostas.

 

Favor criar somente um tópico para cada pergunta, para não desrespeitar a Regra 10 (flood).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia aproveitando o tópico estou com serios problemas...... qdo faço uma chamada para uma pagina em php com acessoa banco de dados as funções php naum funcionam eh como se fosse uma pagina html, alguem sabe me explicar pq e se tem como resolver isso?

 

 

grato

Cleber

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cleberson Ramos... q tipo de chamada você esta tentando fazer? é AJAX msm, ou é outro tipo?

Descreva os erros de saida, caso exista algum...

 

Tbm... Seja muito bem vindo ao forum iMasters.

quanto tiver um tempo de uma lida nas Regras do Forum

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha eh assim....tem um link na pagina index php que chama uma outra pagina php ex. 01.php e o ajax carrega essa pagina em uma div chamada conteudo...ele carrega td beleza mais as funções php da pagina que foi carregada a 01.php naum funcionam, ou seja n tem como exiobir os dados de um banco de dados, se eu abrir essa pagina 01.php separada ela funciona numa boa se eu carrggar na div as funções php m funcionam eh issu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você fez todos os includes corretamente?

Os arquivos estão todos no mesmo diretório? Estão com os caminhos corretos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim esta td certinho...tdos os caminhos estaum corretos o unico arquivo que esta em outra pasta eh o include que tem as configurações de banco de dados que esta em uma pasta chamada includes, fora issu tah td no mesmo local....até pq se eu executar o arquivo separado ex.: www.endereco.com.br/01.php ele funciona corretamente mais se essa mesma pagina for carregada no div pelo ajax a pagina naum funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.