3
respostas

ARMAZENAR REQUISICAO AJAX

E ai galera, beleza?

Seguinte, estou fazendo uma requisicao com ajax quando carrega a minha pagina e queria armazenar essa resposta dentro de um json para usar posteriormente pois preciso usar esses dados para fazer um calculo conforme o usuario for utilizando minha aplicacao mas como fazia a requisicao a cada clique dele, ela ficava muito pesada e demorava para me retornar

$(document).ready(function() {
  var resultado;
  $.ajax({
    url: "/calcular-produto?produto=" + produto + "",
    dataType: "json",
    success: function(res) {
      resultado = res;
    }
  });
  return resultado;
});
var inputQtd = $("#inputQtd");
var qtdProduto = $("#valorUni");
var produto = $("#codigoProd").val();
var valorTotalProd = $("#valorProduto");

inputQtd.on("keyup", function() {
  var qtd = inputQtd.val();

  if (qtd <= resultado.valores["0"].ZA_QTDE01) {
    if (qtd != "") {
      var valor = qtd * resultado.valores["0"].ZA_VAL01;

      qtdProduto.text(resultado.valores["0"].ZA_VAL01);
      valorTotalProd.text(valor);
    } else {
      qtdProduto.text("00,00");
      valorTotalProd.text("00,00");
    }
  }
});
3 respostas

Fala ai Natan, tudo bem? Isso pode ser feito de N maneiras, talvez uma delas que eu poderia lhe aconselhar seria utilizar o localStorage.

Por exemplo: localStorage.setItem('UMA_CHAVE', JSON.stringify(JSON)).

Depois você pode pegar o JSON usando localStorage.getItem('UMA_CHAVE').

Onde a chave do getItem deve ser a mesma usada no setItem.

Isso irá retornar uma String então você pode convertê-la para objeto.

JSON.parse(localStorage.getItem('UMA_CHAVE'))

Espero ter ajudado.

Bom dia Matheus, tudo bem e com você?

Tentei dessa forma que me explicou e infelizmente não tive sucesso

$(document).ready(function() {
  localStorage.setItem(
    "dados",
    $.ajax({
      url: "/calcular-produto?produto=" + produto + "",
      dataType: "json"
    }),
    JSON.stringify(JSON)
  );
});
var dados = JSON.parse(localStorage.getItem("dados"));

Fala ai Natan, tudo bem? Fiz um exemplo para você ver:

https://jsfiddle.net/mahenrique94/sac9btof/9/

O problema seu está no setItem.

Você tem que fazer ele depois que a requisição terminar e você já tiver os dados da resposta.

Obs: Também poderíamos ter salvo em uma variável as informações ou dentro da função faz a requisição.

Enfim, isso pode ser feito de N maneiras.

Espero ter ajudado.