Ir para conteúdo

POWERED BY:

Arquivado

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

Dinho Z.

É possível carregar valores em variáveis globais ???

Recommended Posts

Galera,

 

Cá estou eu mais uma vez, apanhando um pouco do Ajax...

 

Tenho uma váriável, e declarei ela globalmente, e ela irá receber valores que estão vindo via Ajax, e irei usar estes valores em outra função JavaScript, mas não sei o que acontece que não está dando certo...

 

Meu código, resumindo, está assim:

 

Variáveis globais...

var http_request = false;var arrayImg = "";var imgArray2 = "";

Função que cria o xmlhttp, e a chamada da função que irá pegar os valores...

function makeRequest(){...	http_request.onreadystatechange = cargImg;...}

Função que irá pegar os valores...

function cargImg(){	if (http_request.readyState == 4) {		if (http_request.status == 200) {			arrayImg = http_request.responseText;			imgArray2 = arrayImg.split(',');		}	}}

Se eu coloco alert(imgArray2[1]) dentro deste código, ele exibe o valor que veio, mas quando eu uso imgArray2 em outra função, ele está vazio...

 

Alguma dica ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, quantos valores vêm pelo array?

 

O primeiro valor do array voce acessa através do índice zero, o segundo através de 1, o terceiro do 2, e assim por diante.

 

Ex.:

alert("exibe a imagem 1:" + imgArray2[0])alert("exibe a imagem 2:" + imgArray2[1])

Compartilhar este post


Link para o post
Compartilhar em outros sites

micox,Você não entendeu meu problema...Se eu uso alert(..), ele exibe o que há na variável, o problema é que estou tentando pegar este valor em uma outra função, que não seja a makeRequest e nem a carImg...Alguém pode dar uma luz ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

umm saquei agora.Ummm estranho mesmo.Bom talvez são erros pequenos na hora de escrever:1- veja se a declaração das globais tá no início do código2- veja se não tem outra função que altera/apaga o conteúdo da imgArray.São as duas únicas saidas que eu tenho na cabeça.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada para ver se você não está declarando em alguma das funcoes variaveis com os mesmos nomes da globais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olhei e não achei a resposta para o problema...

 

Quem puder dar uma olhada no código, e tentar entender, posto ele abaixo:

 

<script type="text/javascript">var http_request = false;var arrayImg = "";var imgArray2 = "";var imgArray1 = "";var imagens = "";function makeRequest(){	http_request = false;	if (window.XMLHttpRequest) { // Mozilla, Safari,...		http_request = new XMLHttpRequest();		if (http_request.overrideMimeType) {			http_request.overrideMimeType('text/xml');		}	}	else		if (window.ActiveXObject) { // IE			try {				http_request = new ActiveXObject("Msxml2.XMLHTTP");			}			catch (e) {				try {					http_request = new ActiveXObject("Microsoft.XMLHTTP");				}				catch (e) {}			}		}	if (!http_request) {		alert('Não foi possível criar uma instância XMLHTTP');		return false;	}	http_request.onreadystatechange = cargImg;	http_request.open('GET', 'img.jsp', true);	http_request.send(null);}function cargImg(){	if (http_request.readyState == 4) {		if (http_request.status == 200) {			arrayImg = http_request.responseText;			imgArray2 = arrayImg.split(',');			//Limpa o espaço inicial que vem do programa			imgArray2[0] = imgArray2[0].substring(imgArray2[0].indexOf('a'),imgArray2[0].length);			//Limpa o espaço final que vem do programa			imgArray2 = imgArray2.slice(0,imgArray2.length-1);			imgArray1 = imgArray2.slice(0);			for (cont = 0; cont < imgArray2.length; cont++){				imgArray1[cont] = "mini/" + imgArray2[cont];			}			imagens = imgArray1.concat(imgArray2);//			alert(imagens);		}	}}makeRequest();document.write(imagens);</script>
No código acima, ele deveria escrever o conteúdo da variável imagens na tela, mas não mostra, e se eu tiro o comentário do alert dentro da função cargImg(), ele exibe o conteúdo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

aaaaaaaaaaaaaaaaaaaaaa simples doido.Acompanhe comigo:1) Voce está usando ajax assíncrono, o que quer dizer que o javascript continuará rodando mesmo enquanto carrega o ajax certo?2) Logo após o fim da função makeRequest voce acha que a página pedida pelo ajax já chegou??? Negativo, ela ainda tá no caminho, PORTANTO A FUNÇÃO cargImg NÃO FOI EXECUTADA AINDA.3) Como o javascript continua rodando, logo após o fim da makeRequest, o processamento vai pra próxima linha, que é qual?? tchanam: "document.write(imagens);".4) Como a função cargImg ainda não foi carregada, a variável imagens AINDA É VAZIA.Prontim...

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.