Ir para conteúdo

POWERED BY:

Arquivado

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

FabianoSouza

Passar retorno do AJAX para outra function

Recommended Posts

Preciso pegar a string retornado do AJAX para ser usada em em outra function.

...trecho do AJAX...
	  if ($obj.readyState == 4 && $obj.status == 200){ 
	  var $strjson = ($obj.responseText);
	  var $dados = eval($strjson);
	  return $dados // isso aqui que preciso passar para outra function
	  }
	  }
	  $obj.send(encodeURI("url="+$url));
	  }

Estou tentando recuperar assim

	function constroiWidgets($dados)
	{
		var $dadosJson = carregaDados($dados);
		alert($dadosJson)
	}

O alert mostra "undefinied"

Help!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ajax não retorna pq é assincrono.

 

Use sincrono, ou use promises/deferred.

http://wbruno.com.br/jquery/exemplo-de-uso-jquery-deferred-simples/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo...

Tem que ser com JQuery (conforme o link que passou) ou consigo pelo JS clássico?

Estou tentando pelo mais fácil heheh

 

Para usar como síncrono basta definir como false, né? Defini.

	function carregaDados()
	{
	var $url = "/App/Dir1/Dir2/Dir3"
	var $obj = createXMLHTTP(); 
	$obj.open("post", "pagina.asp", false); 
	$obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	$obj.onreadystatechange=function(){
	if ($obj.readyState == 4 && $obj.status == 200){ 
	var $strjson = ($obj.responseText);
	var $dados = eval($strjson);
	return $dados
	}
	}
	$obj.send(encodeURI("url="+$url));
	}

Fiz essa mudança mas não funfou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegue pelo clássico sim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

William, olhei o link. Como sou uma negação em JQuery, fiquei boiando sobre o texto.

 

Pessoal, depois um bom tempo me dei conta que poderia usar apenas um AJAX para toda a app.

Basta passar dois parâmetros para o objeto XMLHTTP: a url e os dados a serem enviados.

Fiz isso.

	function gravador($camposDados, $url)
	{
		var obj = createXMLHTTP(); 
		obj.open("post", $url, true); 
		obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		obj.onreadystatechange=function(){
		if (obj.readyState == 3){
		}
		else
		if (obj.readyState == 4 && obj.status == 200){ 
		var $respServer = (obj.responseText);
		}
		}

			obj.send(encodeURI($camposDados));
}

Não sei se é correto. Mas funciona. Em toda function que grava ou atualiza dados eu chama essa linha gravador($camposDados, $url) (que roda a function acima).

 

 

Agora preciso pegar o retorno e devolver para a function que disparou o AJAX.

Como Willian falou, tem a questão de ser assíncrono. Vi vários códigos para tornar síncrono. Mas 90% em JQuery (manjo nada disso).

 

Help por favor. Como adapto minha function?

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.