2017-09-14 2 views
-1

J'ai une URL qui contient des données au format JSON. Je veux enregistrer ces données dans la mémoire du navigateur local au chargement de la page. Plus tard, j'ai besoin d'utiliser cette copie locale comme source pour ma saisie semi-automatique JQuery. Au moment où je pointe la source de saisie semi-automatique à cette URL, il appelle très souvent ce service. Aidez-moi s'il vous plaît à enregistrer les données dans la mémoire locale du navigateur et comment l'utiliser pour l'autocomple jQuery. Merci.Enregistrement de données json dans une URL vers la mémoire du navigateur lors du chargement de la page

Répondre

0

Si vous voulez vraiment stocker prendre plus de façon permanente localement un coup d'œil à local storage

Vous devriez être en mesure de faire quelque chose comme

$(document).ready(function { 
    $.get('http://example.com', function (data) { 
     localStorage.setItem('autocomplete', data.toString()); 
}); 

Et puis sur une page que vous pouvez utiliser

var autocompleteData = JSON.parse(localStorage.getItem('autocomplete') 
$('#myautocomplete').autocomplete({source: autocompleteData}); 

Mais il suffit simplement de déclarer une variable d'étendue de page et de l'utiliser. De cette façon, il appelle une fois par chargement de la page et vous n'avez pas besoin de l'expirer. Cela suppose que vous pouvez analyser la réponse dans un tableau au format approprié. Cela signifie que vous pouvez analyser la réponse dans un tableau au format approprié.

Mise à jour basée sur un commentaire:

Je pense que vous aurez toujours besoin de passer dans la fonction comme source, que vous faites une recherche contient (indexOf(..) != -1).

Votre AutoCompleteSource contiendrait toutes des données imbriquées: peut-être

$.get('http://example.com', function (data) { 
    autocompleteSource = []; 
    data.countries.map(function(itemCountry) { 
     itemCountry.cities.map(function(itemCity) { 
      itemCity.destinations.map(function(itemDestination { 
       autocompleteSource.push(itemDestination); 
}); 

et vous alors déclarer la méthode juste travailler hors des données locales mis

$('#myautocomplete').autocomplete(source : function (request, response){ 
    var filtered = autocompleteSource.filter(function(item){ 
     return item.toLowerCase().indexOf(request.term.toLowerCase()) > -1 
    }); 
    response(filtered); 
}); 
+0

Merci pour la réponse. Je ne veux pas le sauvegarder définitivement. Existe-t-il une autre méthode pour l'enregistrer temporairement. – Nidhin

+0

@Nidhin - J'ai inclus un exemple de cela ci-dessous –

+0

Ceci est ma source actuelle. Pourriez-vous aider à le remplacer par "autocompleteSource" source: function (requête, réponse) {$ .ajax ({url: "* service url *", succès: function (données) {var search_data = []; data.countries .map (function (itemCountry) {itemCountry.cities.map (fonction (itemCity) {itemCity.destinations.map (fonction (itemDestination) {if ((itemDestination.name.toLowCase()). indexOf (request.term.toLongueCase ())! = -1) {itemDestination.label = itemDestination.name; search_data.push (itemDestination);}});})}) réponse (données_recherche);}}); } – Nidhin