Função executa duas vezes

0 respostas
S

Oq acontece nesse caso é o seguinte:

Quando chamo o minha funcao exibe(), eu chamo um metodo na minha classe para ler um xml e montar uma lista em árvore, basicamente eu vou montando a árvore aos poucos sempre adicionando um pouco por vez.

Entao oq acontece, a primeira vez que eu executo funciona perfeitamente mandando os parametros corretos, a segunda vez tbm mas a partir da terceira ele manda os parametros da terceira vai até a minha classe monta a minha lista, porem volta a executar a as chamadas da segunda requisicao.

Jquery:
var html = "";
var cont = 0;
var lista = new Array();

$(document).ready(function(){
	var obj = $("#arvore");
	carregarAjax("",obj,"");
});

function exibe(obj){
	var id = $(obj).attr("id");
	var parentId = $(obj).attr("parentId");
	var filhos = $(obj).next();
	
	//var indicarLista = id+parentId;
	var indicarLista = id;

	if(lista[id] != undefined && filhos.length>0){
		if($(filhos).is(":visible")){
			$(filhos).hide("slow");
		}
		else {
			$(filhos).show("slow");
		}
		
	}
	else if(lista[id] != undefined && filhos.length<=0){
		carregarLista(lista[id],$(obj));
	}
	else if(lista[id] == undefined){
		carregarAjax(id,$(obj),parentId);
	}
	return false;
}

function carregarAjax(id,local,parentId) {
	$.ajax({
		url:"loadJsonData.action",
		type: "POST",
		dataType: "json",
		cache:false,
		async:false,
		data: {id:id,parentId:parentId},
		success : function (json){
			carregarLista(json,local);
		}
	});
}

function carregarLista(json,local){
	var root = "";
	if(json.root == undefined){
		root = json;
	}else{
		root = eval(json.root);
		root = root[0];
	}
	//var root = eval(json.root);
	if(root == null){
		return;
	}
	else{
		
		
		
		lista[root.id] = root;
		
		//verificar se root.notify = 0 coloca o o onclick
		
		html += "<li><div class ='link' id = '"+root.id + "' parentId ='" + root.parentId+"' onclick='exibe(this)'>" + root.text+"</div><ul>";
		for(var no in root.children){
			//alert(root[0].children[no]);
			//verificar como trabalhar com linckHashMapa
			var textoExibicao = root.children[no].text;
				html += "<li><div class='link' id = '" + root.children[no].id+"' parentId ='" + root.children[no].parentId+"' onclick='exibe(this)'>"+textoExibicao+"</div></li>";
				
		}

		html+="</ul></li>";
		$(local).html(html);
		html = "";
	}
}
Página
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Emulador Arvore</title>
<script type="text/javascript" src="resources/jquery/jquery-1.7.2.js"></script>
<link rel="stylesheet" type="text/css" href="resources/css/estilos.css">
<script type="text/javascript" src="resources/jquery/json2.js"></script>
<script type="text/javascript" src="resources/jquery/funcoes.js"></script>
</head>
<body>
<div class="leftSide">
	<ul id="arvore">USSD</ul>
</div>
<div class="rightSide">
</div>
</body>
</html>
Pedaço do xml
<mapa:no id="no1052">
			<mapa:servico ref="srvConsultarUltimoAssinante">
				<mapa:transformacaoEntrada>
					<mapa:xsl ref="ConsultarUltimoAssinante.xsl">
						<mapa:parametros>
							<mapa:param id="MSISDN" valor="#{msisdn}" />
						</mapa:parametros>
					</mapa:xsl>
				</mapa:transformacaoEntrada>
				<mapa:responseXML ref="#{xmlConsultarUltimoAssinante}" />
				<mapa:transformacaoSaida>
					<mapa:xsl ref="AvaliaConsultarUltimoAssinante.xsl" />
					<mapa:saida ref="#{resultadoAvaliacao}" />
				</mapa:transformacaoSaida>
			</mapa:servico>
			<mapa:redireciona ref="#{resultadoAvaliacao}">
				<mapa:saida id="CARTAO" ref="noCARTAO" />
				<mapa:saida id="CONTA" ref="noCONTA" />
				<mapa:saida id="CONTROLE" ref="noCONTROLE" />
				<mapa:saida id="PJ" ref="noPJ" />
				<mapa:saida id="*" ref="encaminhaErro" />
			</mapa:redireciona>
		</mapa:no>
		<mapa:no id="noCARTAO">
			<mapa:menu>
				<mapa:textoMenu texto="CARTAO.texto" />
				<mapa:resposta ref="#{respostaMenu}" />
			</mapa:menu>
			<mapa:redireciona ref="#{respostaMenu}">
				<mapa:saida id="1" ref="noCompradePacotes" />
				<mapa:saida id="2" ref="noServicos_CARTAO" />
				<mapa:saida id="3" ref="noConta" />
				<mapa:saida id="4" ref="noConsultaFranquiadeDados" />
			</mapa:redireciona>
		</mapa:no>
                                <mapa:no id="noServicos_CARTAO">
			<mapa:menu>
				<mapa:textoMenu texto="Servicos_CARTAO.texto" />
				<mapa:resposta ref="#{respostaMenu}" />
			</mapa:menu>
			<mapa:redireciona ref="#{respostaMenu}">
				<mapa:saida id="1" ref="noSigilodeChamadas" />
				<mapa:saida id="2" ref="noDesbloqueiodeAparelho,PlacaeModem" />
				<mapa:saida id="3" ref="noRecado" />
				<mapa:saida id="4" ref="noBloqueiodeChamadas" />
			</mapa:redireciona>
		</mapa:no>
Exemplo de lista que ele monta
<li>
	<div class='link' id = 'noCARTAO' parentId='no1052'>CARTAO</div>
		<ul>
			<li><div class='link' id= 'noCompradePacotes' parentId='noCARTAO'>CompradePacotes</div></li>
			<li><div class='link' id= 'noServicos_CARTAO' parentId='noCARTAO'>Servicos_CARTAO</div>
                                                      <ul>
			              <li><div class='link' id= 'noSigilodeChamadas' parentId='noServicos_CARTAO'>Sigilo de Chamadas</div></li>
			              <li><div class='link' id= 'noDesbloqueiodeAparelho,PlacaeModem' parentId='noServicos_CARTAO'>Desbloqueio de Aparelho,Placa...</div></li>
			              <li><div class='link' id= 'noRecado' parentId='noServicos_CARTAO'>Recado</div></li>
			               <li><div class='link' id= 'noBloqueiodeChamadas' parentId='noServicos_CARTAO'>Bloqueio de Chamada</div></li>
		                      </ul>
                                                </li>
			<li><div class='link' id= 'noConta' parentId='noCARTAO'>Conta</div></li>
			<li><div class='link' id= 'noConsultaFranquiadeDados' parentId='noCARTAO'>ConsultaFranquiadeDados</div></li>
		</ul>
</li>
Criado 3 de agosto de 2012
Respostas 0
Participantes 1