刷新页面上的LocalStorage价值问题

时间:2019-07-02 07:31:12

标签: javascript jquery html ajax local-storage

我对JavaScript,AJAX中的某些货币有疑问。 只要页面没有刷新,一切都可以正常运行。 我需要将html(选择,跨度)与本地存储同步。

因此,在刷新页面时,所有数据仍保留为本地存储-不在dom元素中。

这是代码

/*========= CAMBIO DE DIVISA ==========*/

divisas();

function divisas() {
  $("#cambiarDivisa").append('<option value="USD">$ USD</option>'+'<option value="MXN">$ MXN</option>'+'<option value="EUR">€ EUR</option>')
}

/*========= CAMBIO DE DIVISA ==========*/

$("#cambiarDivisa").change(function(){
  var divisaBase = "USD";
  var divisa = $(this).val();
  $.ajax({
	url: "https://free.currconv.com/api/v7/convert?q="+divisaBase+"_"+divisa+"&compact=ultra&apiKey=MYAPIKEY",
	type:"GET",
	cache: true,
	contentType: false,
	processData: false,
	dataType:"jsonp",
	success:function(respuesta){
		var divisaString = JSON.stringify(respuesta);
		var conversion = divisaString.substr(11,6);

		localStorage.setItem("respuesta", JSON.stringify(divisaString));
		var respuestadivisa = JSON.parse(localStorage.getItem("respuesta"));
        var divisavalue = respuestadivisa.substr(6,3);
		console.log("respuesta",divisavalue);
		$(".cambioDivisa").html(divisavalue);
	}
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span class="cambioDivisa">USD</span>
<div class="divisa">
    <select class="align-self-end" name="divisa" id="cambiarDivisa" 
    </select>
</div>

1 个答案:

答案 0 :(得分:0)

您应该在网页启动时将值重新加载回Options元素。因此,不要将加载的数据放入ajax回调本身中,而应将其放入$(document).ready中。

$(document).ready(function() {

    var respuestadivisa = JSON.parse(localStorage.getItem("respuesta"));
    var divisavalue = respuestadivisa.substr(6,3);

    console.log("respuesta",divisavalue);

    $(".cambioDivisa").html(divisavalue);

})