2011-11-01 2 views
3

두 개의 jQuery UI Autocomplete 위젯을 설정했습니다. 첫 번째 자동 완성에서는 사용자가 클라이언트의 이름을 입력합니다. 자동 완성은 올바른 클라이언트가 선택 될 때까지 범위를 좁 힙니다. 그런 다음 클라이언트의 ID를 반환하고 숨겨진 입력 필드에 넣는 콜백이 있습니다.jQuery UI 자동 완성 : Ajax 호출로 추가 데이터를 전달하려면 어떻게해야합니까?

다음으로 두 번째 자동 완성 필드가 있습니다. 검색 할 때 두 개의 변수를 서버 - 사용자의 검색 문자열 (term) 및 이전에 검색 한 클라이언트의 사용자 ID로 전송해야합니다.

나는 서버 측 문제를 다루지 않지만, 단지 term이 아닌, Ajax 호출에 2 개의 변수를 전달하는 방법을 고민하고있다. PHP 백엔드에서는 해당 사용자의 속성 만 반환하도록 User ID에 대해 쿼리해야합니다.

어떻게하면됩니까?

감사합니다.

편집 : @ JohnP 덕분에, 이것은 내가 끝내었던 것입니다. 나를 위해 잘 작동하는 것 같습니다. 그것은 정적 메서드의 경우

source: function (request, response) { 

    var request_data = { 
     term: request.term, 
     client_id: $('input#client_id_string').val() 
    }; 

    var url = 'http://mysite.com/search/ajax_search'; 

    $.getJSON(url, request_data, function (data, status, xhr) { 
     response(data); 
    }); 
}, 

답변

1

당신은 source 메소드를 오버라이드 (override) 할 수 있습니다에 의해 떨어 미래에 누군가를 위해 참조 할 수 있도록 여기를 게시.

//code 
source: function (request, response) { 
    var term = request.term; 
    //caching if yo uwant 
    var myCustomVar = 42; 

    $.getJSON(url + term + '/' + myCustomVar , request, function (data, status, xhr) { 
      response(data); 
    }); 
}, 
//code 

원하는 경우 URL을 만들거나 요청과 함께 전달할 수 있습니다.

+0

감사합니다. 이것이 올바른 방향이라고 생각합니다. 그러나 나는 그것을 실행할 때이 에러를 본다 :'Uncaught ReferenceError : _ac은 정의되지 않았다'- 어떤 아이디어? 고맙습니다! – Jack

+0

죄송합니다. _ac 비트는 여러 인스턴스에서 사용하도록 코드를 확장 한 것입니다. 나는 그것을 지웠다. 이것은 당신에게 필요한 것을 줄 것입니다. – JohnP

+0

감사합니다. @ 존콩 - 많은 감사를드립니다. 나는 당신이 일하기 위해 약간 게시 한 것을 실험했지만, 나는 아직도 JS 초보자이다. 나는 나의 대답의 마지막에 내가 끝낸 것을 올렸으므로, 잘하고있어. 코드에서 불필요한 느낌이 들었던 비트가 몇 개있어서 필요한 부분을 약간 간소화했습니다. – Jack