2009-08-12 5 views
0

Scriptaculous js 프레임 워크의 Ajax.autocompleter 함수를 사용하여 자동 완성 기능을 구현했습니다. 코드가 작동하지만 지정한 문자와 일치하는 항목 만 채우는 대신 전체 목록이 채워집니다. 이것은 내 코드입니다 :전체 목록이 Ajax.autocompleter 함수로 채워짐

이것은 자동 제안 된 항목을 가져 오는 js 기능입니다.

new Ajax.Autocompleter("autocomplete", "autocomplete_choices", 
         "http://localhost/FormBuilder/forms/autoComplete",{}); 

자동 완료 상자와 항목이 채워진 항목입니다.

<input type="text" id="autocomplete" name="autocomplete_parameter"/> 
    <div id="autocomplete_choices" class="autocomplete"></div> 

그리고 이것은 입력 된 문자에 해당하는 사용자 목록을 얻는 양식 컨트롤러의 autoComplete 작업입니다.

function autoComplete() 
{ 
    $this->set('users',$this->User->find('all',array('fields'=>array('User.id','User.name'), 
                'conditions'=>array('User.name LIKE' => $this->data['User']['name'].'%') 
                ) 
             ) 
    ); 
    $this->layout = "ajax"; 
} 

하지만 문자 'P'를 입력하면 가정, 나는 문자 'P'로 시작하는 사람을 표시하는 대신 전체 사용자의 목록을 가져옵니다. 이 문제가 발생하는 이유는 무엇입니까? 내가 어디로 잘못 갔니?

답변

0

글쎄, 나는 대답을 발견했다. 실제로 실수. paramName 옵션을 Ajax.autocompleter 함수에 추가해야하며 컨트롤러 함수에서 $ _REQUEST 메서드의 값을 가져와야합니다.

new Ajax.Autocompleter("autocomplete", "autocomplete_choices", 
         "http://localhost/FormBuilder/forms/autoComplete", 
         {paramName:"autocomplete"}); 

function autoComplete() 
{ 
    $userName=$_REQUEST['autocomplete']; 
    $this->set('users',$this->User->find('all',array(
            'fields'=>array('User.id','User.name'), 
          'conditions'=>array('User.name LIKE' => $userName.'%')) 
                    ) 
      ); 
    $this->layout = "ajax"; 
} 

이제 해당 알파벳으로 시작하는 항목 만 표시됩니다.

관련 문제