Setar uma variável global (javascript+json)

Pessoal,

Quero obter o valor da variável retorno no código abaixo, mas não sei como. Além poderia me dar um help?

function funcao(){

    var parametro = document.getElementById("parametro");
	var retorno;

	$.getJSON("controller?param="+parametro, function(ajaxResponse){
		var data = eval(ajaxResponse);
		retorno = data[0].resultado;
	});
	
	return retorno;

}

Isso vai realizar uma chamada Assincrona, certo?
Se sim, não tem como, pois quando chegar na linha "return retorno; " a função ainda pode estar sendo executada.

Para esse tipo de caso eu costumo chamar a função que quero dentro dessa própria.

Por exemplo em vez de colocar:

retorno = data[0].resultado; 

Colocar:

   outraFuncaoQualquer(data[0].resultado);

(sim, isso é uma *******)

kra…isso ta me tirando do sério, pq preciso fazer uma validação antes de dar um submit, mas como faria isso se não posso dar um return?

talvez vc possa submeter via javascript mesmo. Por exemplo:

function funcao(){

    var parametro = document.getElementById("parametro");
	var retorno;

	$.getJSON("controller?param="+parametro, function(ajaxResponse){
		var data = eval(ajaxResponse);
		if( data[0].resultado )
                     document.getElementById('idDoMeuForm').submit();
	});
	
	return retorno;

}
 

no meu caso não da…eu tenho varias functions e cada uma valida alguma coisa…eu queria algo assim:

function validaNome(){
//chamada de json ou qualquer outro recurso ajax que 
//pudesse chamar uma classe de validação do Java
return retorno;
}

function validaRG(){
//chamada de json ou qualquer outro recurso ajax que 
//pudesse chamar uma classe de validação do Java
return retorno;
}

function validaCPF(){
//chamada de json ou qualquer outro recurso ajax que 
//pudesse chamar uma classe de validação do Java
return retorno;
}

function checarTodos(){
var retornoTotal;
var flag = 0;
if(validaNome() != null){ retornoTotal += retornoTotal + validaNome(); flag = 1; } 
if(validaRG() != null){  retornoTotal += retornoTotal + validaRG();  flag = 1; } 
if(validaCPF() != null){  retornoTotal += retornoTotal + validaCPF();  flag = 1; } 

document.getElementById('mensagemDeErro').style.visibility = "visible";
document.getElementById('mensagemDeErro').innerHTML = retornoTotal;

if(flag == 0){ 	
objForm = document.nomeDoForm;
objForm.submit();
}


}

Estou usando o Json, mas poderia usar qualquer outro framework ajax.

Hum, acho que entendi o seu problema.

Mas então tipo, não seria mais prático criar uma função “validaPessoa” por exemplo. E nessa função validar todos os campos de uma vez? Dessa forma vc precisava fazer apenas um requisição xmlHttpRequest…

No sistema que estou desenvolvendo, os próprios métodos de salvar, excluir, etc são feitos via ajax, então crio um único método salvar por exemplo, e antes de salvar realizo a validação. Se não passar na validação volto uma mensagem dizendo para o cara o que foi que deu problema. Se passar eu simplesmente salvo…

No seu caso o que citei antes pode ajudar. Fazer um único método para validar todos os campos de um objeto.

agora q saquei …ehehehhe…vou fazer tudo numa function …vlw!