Ir para conteúdo

POWERED BY:

Arquivado

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

A.cerqueira

[Resolvido] carregando dados com AJAX

Recommended Posts

Olá a todos do forum,

eu sou novo no forum mas já acompanho o IMASTERS a muito tempo, e já fui salvo e muito pelo o forum (e quem naum foi?).

 

Mas estou enfrentando um grande e pequeno problema ;) com uma requisição em AJAX. vou explicar melhor e por os códigos...

Essa parti da página esta a função em AJAX e a mesma está retornado os dados conforme a solicitação...

 

detalhe.php

 

function BuscaTamanhos(cod_pro,cod_cor)
	{
		//verifica se o browser tem suporte a ajax 
		try
		{
			ajax = new ActiveXObject("Microsoft.XMLHTTP"); 
		}  
		catch(e) 
		{ 
			try 
			{ 
			   ajax = new ActiveXObject("Msxml2.XMLHTTP"); 
			} 
			catch(ex) 
			{
				try 
				{
					ajax = new XMLHttpRequest(); 
				} 
				catch(exc)
				{ 
					alert("Esse browser não tem recursos para uso do Ajax"); 
					ajax = null; 
			    }
			} 
		}





		//se tiver suporte ajax 
		if(ajax) {

			idOpcao  = document.getElementById("opcoes");

			ajax.open("GET", "tamanho_produto.php?cod_pro="+cod_pro+"&cod_cor="+cod_cor, true); 
			//ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

			ajax.onreadystatechange = function()
			{
				//enquanto estiver processando...emite a msg de carregando 
				if(ajax.readyState == 1) 
				{ 
					idOpcao.innerHTML = "Selecione";  
				}
				//após ser processado - chama função processXML que vai varrer os dados 
				if(ajax.readyState == 4 ) 
				{
					if(ajax.responseXML) 
					{ 
						processXML(ajax.responseXML); 
					} 
					else 
					{ 
						//caso não seja um arquivo XML emite a mensagem abaixo 
						idOpcao.innerHTML = "--Erro ao carreguar os dados--";
					}
				}
			} 

               ajax.send(null);
		} 
		function processXML(obj)
		{ 
			//pega a tag tamanho do XML 
			var dataArray = obj.getElementsByTagName("tamanho");  
			//total de elementos contidos na tag tamanho 
			if(dataArray.length > 0) 
			{
				//percorre o arquivo XML paara extrair os dados 
				 for(var i = 0 ; i < dataArray.length ; i++)
				{
					var item = dataArray[i]; 
					//contéudo dos campos no arquivo XML 
					var id_tamanho = item.getElementsByTagName("id_tamanho")[0].firstChild.nodeValue; 
					var tamanho_nome = item.getElementsByTagName("tamanho_nome")[0].firstChild.nodeValue; 


					 //cria um novo option dinamicamente
                                                var novo_option = document.createElement("option");
                                               //atribui um ID a esse elemento
                                                novo_option.setAttribute("id", "opcoes");
                                                //atribui um valor
                                                novo_option.value = id_tamanho;
                                               //atribui um texto
                                               novo_option.text  = tamanho_nome;
                                                //adiciona o novo elemento
                                                document.forms[0].tamanhos.options.add(novo_option);
	                          }


		  }else
		  {
			   //caso o XML volte vazio, printa a mensagem abaixo
               idOpcao.innerHTML = "--Tamanhos não disponíveis--";
		  }

		}//end function processXML 


	}

 

O único problema é que, quando clicka

 

<a href="javascript:void(0);" onclick="BuscaTamanhos(5,6);" >Preto</a>

 

<a href="javascript:void(0);" onclick="BuscaTamanhos(5,8);" >Amarelo</a>

 

é chamada a função corretamente e os dados aparece onde quero

 

<select name="tamanhos" id="tamanhos">
  <option value="" id="opcoes" >Primeiro selecione uma Cor</option>

     </select>

 

mas o problema é que ao chamar a função novamente ela retorna os dados de novo repetido tipo o LOOP continua, ao invés de os dados sumir e

aparecer novamente ela retorna os mesmo de novo e quanto mais eu clicko mais dados vem, entendeu?

EXEMPLO: cor PRETO tem tamanho no banco de dados P e M

cor AMARELO não tem nenhum tamanho

mas se eu clikar em PRETO aparece os dois tamanhos correto, agora se eu clickar em AMARELO aparece a msg q não tem tamanhos disponível + os dois tamanhos

da cor PRETA e se eu clicko novamente em preto aparece mais dois tamanhos P e M e fica um par de cada no COMBO e assim vai seguindo enquanto clicko...

 

Conclusão: como faço pra PARAR com isso? aonde está o erro ai no AJAX? é na parte em que cria outro elemento option?

O meu XML está retornado os dados corretamente!!!

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.