3

これらの2つのツールを使用すると、奇妙なバグが発生します。APIに対してAJAXクエリを作成してから、localStorage内に保存され、オートコンプリートパネルに表示されるJSONデータを取得しています。問題は、オートコンプリートソースの出所に応じて、パネルの反応が異なることです。

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(data).Resultをオートコンプリートソースに渡すと、問題ありません。ただし、localStorage.getItem('ac_source')を渡すと、acウィジェットは風に吹かれて(自分の関数を使用せずに)AJAXリクエストを送信します(私のnode.jsはそれを解析しようとしますなど)。

ローカルストレージを使用して、コードの他の部分からこれらのデータにアクセスしています(他のユーザー調査と比較するために保存し、リクエストが同じ場合は表示します)。

4

1 に答える 1

2

ローカル ストレージに格納できるのは文字列データのみです。

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

$("#search_input").autocomplete( "option", "source", JSON.parse(localStorage.getItem('ac_source')).Result);
于 2012-05-01T14:57:02.323 に答える