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:
[code]
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 = "";
}
}[/code]
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>