2012-04-25 16 views
3

これらの2つのツールを使用すると、ちょっと変わったバグがあります。 私はAPIにAJAXクエリを作成してから、localStorage内に保存され、オートコンプリートパネルに表示されるJSONデータを取得しています。問題は、オートコンプリートソースの起源に応じて、パネルが異なる反応をすることです。ここでオートコンプリート(jQuery UI)とローカルストレージ

は、AJAXの成功に呼び出されるコールバック関数です:

function _company_names(data) 
{ 
    localStorage.setItem('ac_source', JSON.parse(data).Result); 

    // Works fine 
    $("#search_input").autocomplete("option", "source", JSON.parse(data).Result); 
    // Send an AJAX request 
    $("#search_input").autocomplete("option", "source", localStorage.getItem('ac_source')); 
} 

私はオートコンプリートのソースに結果としてJSON.parse(データ).Resultを渡すと、それは罰金になります。しかし、localStorage.getItem( 'ac_source')を渡すと、ACウィジェットはAJAXリクエスト(自分の関数を使用しない)を風に吹き込みます(私のnode.jsはそれを解析しようとします)。

私はlocalstorageを使用して、自分のコードの他の部分からこれらのデータにアクセスします(他のユーザーの研究と比較して、要求が同じであれば表示します)。

+1

のgetItemの戻り値の型は何ですか?それを使用する前にJSON.parseする必要がありますか?オートコンプリートは文字列をURLとして解釈しているようです。 – Rup

+0

あなたはそうだった、それは解析の質問でした。ローカルストレージ内のデータに影響を与えて修正し、ソースオートコンプリート内で解析しました。 \t localStorage.setItem( 'ac_source'、raw_data); autocomplete( "option"、 "source"、JSON.parse(localStorage.getItem( 'ac_source'))。Result); \t $( "#search_input")。 – Simon

答えて

2

あなたがローカルストレージに文字列データのみを保存することができます - 文字列

localStorage.setItem('ac_source', '{"key":"data","key1":"data1"}'); 

$("#search_input").autocomplete("option", "source", JSON.parse(localStorage.getItem('ac_source')).Result); 
関連する問題