How to return the function variable in Jquery

0

Hello, I would like to return the variable namedestate into another function. How do I do that? The variable returned in the Undereco is undefined.

  function retornaEndereco()
  {
  $('.informacoes-perfil-endereco').css('display','none');
  var parseResult = "";
  var itemHTML = "";
  var resultadoBairro = "";
  var getEnderecoLogado = sessionStorage.getItem("dadosendereco");
  var quantidadeEndereco = parseResult.length;
  var listaEnderecos = $(".informacoes-perfil-endereco .box-content");
  parseResult = JSON.parse(getEnderecoLogado);

  if (parseResult == null)
  {
    console.log('Não há informações de endereço cadastradas');
  }
  else
  {
    $('.atualizar-cadastro-endereco').css('display','none');
    $('.informacoes-perfil-endereco').css('display','block');

    parseResult.forEach(function(item)
    {

      if (item.bairroendereco == "Selecione...")
      {
        resultadoBairro = "Não há bairro para a localidade";
      }
      else
      {
        resultadoBairro = item.bairroendereco;
      }

      // retorna as cidades em o id da cidade
    RETORNAR AQUI  var nomeestado = estadoEditar(item.estadoendereco);
      var nomecidade = cidadeEditar(item.estadoendereco, item.cidadeendereco);

    //  alert(nomeestado);

      itemHTML += "<div class='cependerecotexto'>Cep: <strong>" + item.cependereco  + "</strong></div>";
      itemHTML += "<div class='logradouroenderecotexto'>Logradouro: <strong>" + item.logradouroendereco + "</strong></div>";
      itemHTML += "<div class='numerologradourotexto'>Número: <strong>" + item.numeroendereco + "</strong></div>";
      itemHTML += "<div class='complementologradourotexto'>Complemento: <strong>" + item.complementoendereco + "</strong></div>";
      itemHTML += "<div class='estadocomplementotexto'>Estado: <strong>" + nomeestado + "</strong></div>";
      itemHTML += "<div class='cidadecomplementotexto'>Cidade: <strong>" + nomecidade + "</strong></div>";
      itemHTML += "<div class='bairrocomplementotexto'>Bairro: <strong>" + resultadoBairro + "</strong></div><br />";
      itemHTML += "<a href='' title='Atualizar o Endereço' class='btn-atualizar-endereco-seg-parte' style='font-weight: bold; font-size: 15px; text-decoration: underline;'>Atualizar o Endereço</a>";

    });

    listaEnderecos.append(itemHTML);
  }
}

 function estadoEditar(idEstado)
  {
    var id_estadoselecionado = "";
    var nomeestado = "";
    $.ajax({
      url: urlBase + "estado",
      method: 'GET'
    }).done(function(retorno)
    {
      $.each(retorno.data, function (i, item)
      {
        idestadoSelecionado = item.estado_id;
        if (idestadoSelecionado == idEstado)
        {
          nomeestado = item.nome;
        }
      });
    RETORNAR LA NA OUTRA FUNÇÃO        return nomeestado;
    }).fail(function(data)
    {
      console.log(data);
    });
  }

// I just improved tabbing

    
asked by anonymous 25.08.2017 / 22:26

1 answer

1

From what I've seen here, you're literally not going to be able to return the result in this way, because when you return inside the jQuery method, it's returning yes but to the jQuery method's scope not its function stateEdit (idEstado), got it? (it's kind of confusing to even understand this)

Nowadays we have features in the new version of JavaScript that give us asynchronous solutions, but this problem is an asynchronous problem.

For example our Promises

But I believe you are not using new features of JS, so I recommend that you make a callback to get the value you need

Code

Instead of simply passing the state id to the function, change to the following form:

function estadoEditar(idEstado, callback)

Once this is done, modify your AJAX code to the following form:

Where is it:

return nomeestado;

Switch to

callback(nomeestado)

To use this method, try doing the following:

estadoEditar(idEstado, function (nomeEstado) {
    console.log(nomeEstado)
    // após pegar o nome do estado, continue sua lógica aqui dentro
})

I hope this helps you!

    
25.08.2017 / 22:56