Ir para conteúdo

POWERED BY:

Arquivado

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

andreia_sp

[Resolvido] Ajax dentro de ajax

Recommended Posts

tenho um pop-uop com varias abas, ao clicar em uma aba um ajax é executado para retornar os dados do banco. Mas uma das abas retorna um comando de executar outro ajax. E isso nao está funcionando.

é possivel ajax dentro de ajax?

Compartilhar este post


Link para o post
Compartilhar em outros sites

alí pinado, tem alguns que tentaram resolver esse problema.. de executar javascript carregado com ajax:

http://forum.imasters.com.br/index.php?/topic/264642-executar-funcoes-js-em-paginas-carregadas-com-ajax/

 

eu sugiro não trazer código javascript com ajax.

 

já deixe tudo oque for precisar na página que foi previamente carregada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

maravilha hein, a função magica funcionou. obrigada aos dois em especial William pelo link

 

ptz é só elogiar... no IE 6 não funciona. coloquei eval em tudo que é possivel. alguem tem alguma sugestao?

Compartilhar este post


Link para o post
Compartilhar em outros sites

exemplo do que estou fazendo e não funcionando no IE (6)

 

ajax.js

 

var xmlHttp

function loadAjax(pagina, container)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
	alert ("Este browser não suporta HTTP Request")
	return
}

xmlHttp.onreadystatechange=function()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{ 
	document.getElementById(container).innerHTML=xmlHttp.responseText
}
newTag(container)
}
xmlHttp.open("GET",pagina,true)
xmlHttp.send(null)
}

function GetXmlHttpObject()
{
var objXMLHttp=null
if (window.XMLHttpRequest)
{
	objXMLHttp=new XMLHttpRequest()
}
else if (window.ActiveXObject)
{
	objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
}
return objXMLHttp
}

	function newTag(local) 
	{
		var conteudo = document.getElementById(local);
		var newElement = document.createElement("script");
		var scripts = conteudo.getElementsByTagName("script");
		for (var i = 0; i < scripts.length; i++) {
			newElement.text = scripts[i].innerHTML;
		}
		conteudo.appendChild(newElement);
	}

defaut.html

 

<script src="ajax.js"></script>
<script>
loadAjax('pagina_include.html','container_pai');
</script>

<div id="container_pai"></div>

pagina_include.html

 

<script src="ajax.js"></script>
<script>
loadAjax('pagina3.html','container_filho');
</script>

pagina nivel 2

<div id="container_filho"></div>

pagina3.html

 

pagina nivel 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:

function GetXmlHttpObject(){
		//cria o objeto XMLxmlHttpRequest pra Firefox, Chrome, Opera, Safari, etc.
		try {
			return new XMLHttpRequest();
		} 
		
		//cria o objeto XMLHttpRequest pra IE 6.0 e posteriormente para IE7+
		catch (e) {
			try {
				return new ActiveXObject('Msxml2.XMLHTTP');
			} 
			
			catch (e) {
				return new ActiveXObject('Microsoft.XMLHTTP');
			}
		}
		
	};

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que descobri o problema. Primeira coisa, eu criei um exemplo errado pois nao se poe o load do ajax antes do objeto chamado. ok, mas mesmo tirando isso o meu codigo continuava com problema.

 

1º coisa: mudei o lugar da chamada da funcao newTag:

 

xmlHttp.onreadystatechange=function()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{ 
        document.getElementById(container).innerHTML=xmlHttp.responseText
        newTag(container)
}
}
xmlHttp.open("GET",pagina,true)
xmlHttp.send(null)
}

2º coisa, no arquivo pagina_include precisa ter algum texto, usei o BR pq nao tinha o que colocar. Nao entendi muito bem o por que mas deduzo que é pra ter algo pra atachar e nao ficar nulo (?!) de qualquer forma, consegui o resultado no IE

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.