Ir para conteúdo

POWERED BY:

Arquivado

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

Rafael Spessotto

Funcao Javascript "se encavalando"

Recommended Posts

Pessoal, estou com um probleminha... Tenho duas funcoes javascript + jquery, que buscam no Banco de Dados as informacoes, e a outra carrega os checkboxes com essa informacao (true ou false)..

 

O problema é que como uma executa depois da outra, eleas se "encavalam" e tem hora que carrega, e hora que nao carrega direito... eu coloquei um alert no meio delas e ai funciona...

 

Alguem sabe como resolver isso?

 

Abraçao!!!

 

Rafael S.

Compartilhar este post


Link para o post
Compartilhar em outros sites

function CarregaEspecialidade(IDEspecialidade,Especialidade)
{
	//alert(IDEspecialidade);
	
	divItensEspecialidade = document.getElementById('telaetapa_corpo');
	divItensEspecialidade.innerHTML = "<br><br>";	
				
	var NomeEspecialidade = Especialidade+ "N1.png";
	var Imagem = '<div id="itemespecialidade" class="itemespecialidade"> <img src="images/especialidades/' + NomeEspecialidade + '" title=' + NomeEspecialidade + '" /> </div>';
	divItensEspecialidade.innerHTML = "<br>" + Imagem + "<br>";		
 	divItensEspecialidade.innerHTML = divItensEspecialidade.innerHTML + "<input type='hidden' id='IDEspecialidade' value=" + IDEspecialidade + ">";								
 	
	var j=1;
	$.getJSON("carrega_especialidade.php?vIDEspecialidade=" + IDEspecialidade,function(data){
	$.each(data.especialidade, function(i,item){	
	//alert(item.DESCRICAO);
	divItensEspecialidade.innerHTML = divItensEspecialidade.innerHTML + "<input type='checkbox' id='chk" + j + "' value='false'>" + j + " - " + item.DESCRICAO + "<br><br>";	
	j++;	
	//$(newRow).appendTo("#atelaetapa_corpo");
	});
	});	
	
}

function CarregaItensEspecialidade(id_usuario, id_especialidade)
{
	alert(id_especialidade);
	
	$.getJSON("carrega_itens_especialidade.php?vIdusuario=" + id_usuario + "&vIDEspecialidade=" + id_especialidade,function(data){
		$.each(data.especialidades, function(i,user)
		{
			//alert(user.ITENS_COMPLETOS);
			
			var str = user.ITENS_COMPLETOS;
			var split = str.split(',');
			
			var i =0;
			$('input[type=checkbox]').each(function () 
			{
					if(split[i] == "1")
					{
						this.checked = true;				
					}
					else
					{
						this.checked = false;
					}
					i++;			
			});	
		
		});	
	});		
}

A primeira funcao chama o php que traz do banco os nomes dos checkbox que eu quero mostrar..

A segunda pega do banco quais desses checkbox estao checados ou nao...

 

E ai quando eu chamo os dois , um depois do outro, ele carrega os checkbox com os textos que vem do banco, mas nao "checa" os que estao salvos no banco. Hora carrega, hora nao carrega... Quando eu coloquei o alert entre as duas chamadas de função, ai ele funcionou bem (mas eu nao quero esse alert ai kk)

 

valews!

 

Rafael S

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq vc já não trás tudo de uma só vez? num único ajax ?

 

Nesse teu caso, vc tem que garantir a ordem de execução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce diz, traz o item e se ele esta checado ou nao? *como nao pensei nisso antes? kkkkkkk

 

Mas como eu faria para garantir essa ordem de execução? Porque quando eu criava os checks "na mao" ele funfava... Ai automatico assim ele ta se perdendo.. :(

 

 

 

Rafael S.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para garantir a ordem de execução, vc só pode disparar a segunda requisição quando a primeira voltar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$.getJSON("carrega_especialidade.php?vIDEspecialidade=" + IDEspecialidade,function(data){

//aqui dentro é quando o primeiro ajax já voltou.

$.each(data.especialidade, function(i,item){

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não cara.. tenha em mente que ajax é assincrono.

Então as duas foram chamadas simultaneamente.

 

A segunda não espera a primeira terminar e já inicia junto exatamente por causa do assincronismo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dentro do each() não, pq o each() é um loop. (desculpa, corrigi o outro post)

Mas dentro dessa function aqui:

 

$.getJSON("carrega_especialidade.php?vIDEspecialidade=" + IDEspecialidade, function(data){
       //aqui
	$.each(data.especialidade, function(i,item){

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.