Ir para conteúdo

POWERED BY:

Arquivado

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

fabiapo

[Resolvido] Problemas no contexto de variável

Recommended Posts

Pessoal,

 

Estou desenvolvendo uma função onde, muito estranhamente, ela não retorna um valor após um loop. Segue a função:

 

function montaHtml(resposta)
{
var tam_respostas = resposta.split(',').length;
var respostas = resposta.split(',');
var descricao_criterio, descricao_pergunta, descricao_resposta;
var ident, criterio, pergunta, resposta;
var html_respostas="";

for (var numero = 0; numero < tam_respostas; numero ++){
	ident = respostas[numero].split('_');
	criterio = ident[0];
	pergunta = ident[1];
	resposta = ident[2];

	if (criterio!='' && criterio!=null)
	{
		$.post('config.xml',function(retorno){
			$(retorno).find(criterio).each(function(){
				descricao_criterio = $(this).find('DESCRICAO').text();
				descricao_pergunta = $(this).find(pergunta).text();

				if (resposta==='S')
				{ 
					descricao_resposta = 'SIM';
				}else{
					descricao_resposta = 'NÃO';
				}	

				html_respostas = html_respostas + descricao_criterio +'<br /><br />'+ descricao_pergunta+'<br /><br />'+descricao_resposta+'<br /><br />';			
			});
		})
	}
	//ALERT AQUI RETORNA OS VALORES DE ACORDO COM O LOOP;
}
// ALERT AQUI RETORNA BRANCO OU O VALOR QUE DEFINI LOGO APÓS A FUNCTION
}

 

O que estou fazendo de errado?

 

Obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você não vai conseguir usar return qndo está fazendo uma requisição ajax asssincrona.

 

veja sobre o objeto deferred

http://www.maujor.com/blog/2011/02/01/o-objeto-deferred-da-jquery-1-5/

Compartilhar este post


Link para o post
Compartilhar em outros sites

William,

 

Eu utilizo o jquery 1.4.2 na minha aplicação. Existe alguma forma de se fazer esta sincronia com ele ou eu terei que pegar a nova versão para utilizar o when?

 

Obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Henrique e William,

 

Funcionou!

 

o código ficou assim:

 

function montaHtml(resposta)
{
var tam_respostas = resposta.split(',').length;
var respostas = resposta.split(',');
var descricao_criterio, descricao_pergunta, descricao_resposta;
var ident, criterio, pergunta, resposta;
var html_respostas="";

$.when($.post('config.xml')).done(function(retorno){
	for (var numero = 0; numero < tam_respostas; numero ++){
		ident = respostas[numero].split('_');
		criterio = ident[0];
		pergunta = ident[1];
		resposta = ident[2];

		if (criterio!='' && criterio!=null)
		{
			descricao_criterio = $(retorno).find(criterio).find('DESCRICAO').text();
			descricao_pergunta = $(retorno).find(criterio).find(pergunta).text();

			if (resposta==='S'){ 
				descricao_resposta = 'SIM';
			}else{
				descricao_resposta = 'NÃO';
			}	

			html_respostas = html_respostas + descricao_criterio +'<br /><br />'+ descricao_pergunta+'<br /><br />'+descricao_resposta+'<br /><br />';
		}
	}
	return html_respostas;
});
}

 

Valeu mesmo!

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.