Javascript 页面加载时将URL中的json数据保存到浏览器内存
我有一个URL,其中包含一些JSON格式的数据。我想在页面加载时将此数据保存在本地浏览器内存中。稍后,我需要使用这个本地副本作为JQuery自动完成的源。目前,我将autocomplete源指向这个URL,所以它非常频繁地调用该服务。 请帮助我将数据保存在浏览器本地内存中,以及如何将其用于jQuery自动完成。Javascript 页面加载时将URL中的json数据保存到浏览器内存,javascript,json,jquery-ui-autocomplete,Javascript,Json,Jquery Ui Autocomplete,我有一个URL,其中包含一些JSON格式的数据。我想在页面加载时将此数据保存在本地浏览器内存中。稍后,我需要使用这个本地副本作为JQuery自动完成的源。目前,我将autocomplete源指向这个URL,所以它非常频繁地调用该服务。 请帮助我将数据保存在浏览器本地内存中,以及如何将其用于jQuery自动完成。 谢谢。如果您真的想在本地更永久地存储它,请查看 你应该可以做一些类似的事情 $(document).ready(function { $.get('http://example.
谢谢。如果您真的想在本地更永久地存储它,请查看 你应该可以做一些类似的事情
$(document).ready(function {
$.get('http://example.com', function (data) {
localStorage.setItem('autocomplete', data.toString());
});
然后在任何你可以使用的页面上
var autocompleteData = JSON.parse(localStorage.getItem('autocomplete')
$('#myautocomplete').autocomplete({source: autocompleteData});
但是仅仅声明一个页面范围变量并使用它就足够了。这样,它会在每次页面加载时调用一次,您不需要使其过期
<script>
var autocompleteSource;
$(document).ready(function {
$.get('http://example.com', function (data) {
autocompleteSource = JSON.parse(data);
});
$('#myautocomplete').autocomplete({source: autocompleteSource});
});
</script>
然后,您将声明该方法仅用于本地数据集
$('#myautocomplete').autocomplete(source : function (request, response){
var filtered = autocompleteSource.filter(function(item){
return item.toLowerCase().indexOf(request.term.toLowerCase()) > -1
});
response(filtered);
});
谢谢你的回复。我不想永久保存它。是否有其他方法将其保存为临时文件。@Nidhin-我在下面提供了一个示例这是我当前的源文件。你能用“autocompleteSource”替换它吗来源:function(request,response){$.ajax({url:“service url”,success:function(data){var search\u data=[];data.countries.map(function(itemCountry){itemCountry.cities.map(function(itemCity){itemCity.destinations.map)(function(itemDestination){if(itemDestination.name.toLowerCase()).indexOf(request.term.toLowerCase())!=-1{itemDestination.label=itemDestination.name;search_data.push(itemDestination);}}}}}响应(search_data);}
$('#myautocomplete').autocomplete(source : function (request, response){
var filtered = autocompleteSource.filter(function(item){
return item.toLowerCase().indexOf(request.term.toLowerCase()) > -1
});
response(filtered);
});