2017-09-14 14 views
-1

JSON形式のデータを含むURLがあります。このデータをページの読み込み時にローカルブラウザのメモリに保存したい。後でこのローカルコピーをJQueryオートコンプリートのソースとして使用する必要があります。現時点では、このURLにオートコンプリートソースを指しているので、そのサービスを非常に頻繁に呼び出すことになります。 ブラウザのローカルメモリにデータを保存してjQueryオートコンプリートに使用する方法を教えてください。 ありがとうございます。ページのロード時にブラウザメモリのURLにjsonデータを保存する

答えて

0

あなたが本当にlocal storage

を見て、より恒久的にそれをローカルに保存したい場合は、

$(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}); 
を使用することができます

しかし、ページスコープ変数を宣言して使用するだけで十分です。これにより、1ページに1回の負荷が発生し、期限切れにする必要はありません。

これは、応答を適切な形式の配列に解析できることを前提としています。コメントをもとに

更新:

私はあなたが含まれている検索(indexOf(..) != -1)を行っているとして、あなたはまだ、ソースとしての機能に渡す必要がありますだと思います。

あなたautocompleteSourceは、ネストされたデータのすべて含まれています:おそらく

$.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); 
}); 

をして、あなただけのローカルデータをオフに作業方法を宣言し、応答のための

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

感謝を設定します。私は永久にそれを保存したくない。一時的に保存する方法はありますか? – Nidhin

+0

@Nidhin - その例を以下に示します –

+0

これは私の現在のソースです。ソース:function(リクエスト、レスポンス){$ .ajax({url: "* service url *"、success:function(data){var search_data = []; data.countriesアイテムが存在するかどうかを確認するには、次のように入力します。.map(function(itemCountry){itemCountry.cities.map(function(itemCity){itemCity.destinations.map(function(itemDestination){if((itemDestination.name.toLowerCase())。indexOf(request.term.toLowerCase ))!})!})!})!})!})!})!})! } – Nidhin

関連する問題