2009-08-12 7 views
0

aufgefüllt Ich habe die Auto-Vervollständigen-Funktionalität mit der Ajax.Autocompleter-Funktion des Scriptaculous JS-Framework implementiert. Der Code funktioniert, aber ich bekomme die gesamte Liste gefüllt, anstatt nur die Einträge zu füllen, die mit dem angegebenen Buchstaben übereinstimmen. Dies ist mein Code:Ganze Liste in der Ajax.Autocompleter-Funktion

Dies ist die js-Funktion, um die automatisch vorgeschlagenen Einträge zu erhalten.

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

Dies ist das Auto-Vervollständigen-Box und die Einträge, bei denen die Einträge bestückt sind.

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

Und das ist die Autocomplete Aktion in dem Formen-Controller, wo die Liste der Benutzer zu den eingegebenen Buchstaben entsprechen, erhalten.

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"; 
} 

Aber nehmen wir an, wenn ich Buchstaben ‚p‘ eingeben, erhalte ich die Liste des gesamten Benutzer statt diejenigen, die mit dem Buchstaben ‚P‘ beginnen angezeigt wird. Warum bekomme ich dieses Problem? Wo bin ich falsch gelaufen?

Antwort

0

Nun, ich fand die Antwort .. Eigentlich ein Fehler. Ich sollte der Funktion Ajax.autocompleter die Option paramName hinzufügen und sollte den Wert in der $ _REQUEST-Methode in der Controller-Funktion erhalten.

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"; 
} 

Jetzt bekomme ich nur die Einträge, die mit diesem Alphabet beginnen.

Verwandte Themen