2012-04-25 2 views
3

두 도구를 사용할 때 이상한 버그가 발생합니다. API에 AJAX 쿼리를 작성한 다음 localStorage에 저장되고 자동 완성 패널에 표시되는 JSON 데이터를 가져옵니다. 문제는 자동 완성 소스의 출처에 따라 패널이 다르게 반응한다는 것입니다. 난 자동 완성 소스 결과 JSON.parse (데이터)을 전달하면 .Result자동 완성 (jQuery UI) 및 로컬 저장소

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')); 
} 

것은 괜찮을 것이다 : 여기

는 AJAX 성공 호출 콜백 함수이다. 그러나 localStorage.getItem ('ac_source')를 넘길 경우 AC 위젯은 바람에 불고있는 AJAX 요청을 보냅니다 (내 node.js가 파싱을 시도 할 것입니다).

내 코드의 다른 부분에서이 데이터에 액세스하려면 localstorage를 사용합니다 (다른 사용자 조사와 비교하고 요청이 동일하면 표시).

+1

- 문자열? JSON.parse를 사용해야 만 사용할 수 있습니까? 자동 완성은 문자열을 검색어로 해석하는 것 같습니다. – Rup

+0

당신이 옳았습니다, 그것은 파싱 질문이었습니다. 로컬 저장소의 데이터에 영향을 미쳐 소스 자동 완성 내에서 파싱했습니다. \t localStorage.setItem ('ac_source', raw_data); \t $ ("# search_input"). 자동 완성 ("옵션", "소스", JSON.parse (localStorage.getItem ('ac_source')) 결과); – Simon

답변

2

당신은 로컬 저장소 만 문자열 데이터를 저장할 수 있습니다 :

의 getItem의 반환 형식이 무엇
localStorage.setItem('ac_source', '{"key":"data","key1":"data1"}'); 

$("#search_input").autocomplete("option", "source", JSON.parse(localStorage.getItem('ac_source')).Result);