получение работы автозаполнения


Я честно сделал то, что этот и этот учебник сказали мне, но каким-то образом мои текстовые поля автозаполнения все еще выдают ошибку ajax. но чтобы быть более конкретным: ошибка ajax выдает 200 http-ответов и статус "ОК", но нет текст ответа.

Моя настройка такова:

$form['field_new_verein_location_'.$i] = array(
    '#type' => 'textfield',
    '#title' => t('<a id="ds_region_new_verein_'.$field_id.'" style="color:black;text-decoration:none;">Neuer Verein Ort</a>'),
    '#default_value' => '',
    '#size' => 60,
    '#maxlength' => 128,
    '#required' => TRUE,
    '#description' => t('description'),
    '#autocomplete_path' => 'dsregion/autocomplete'
);

function ds_regions_menu(){
    $items['dsregion/autocomplete']=array(
      'title' => 'location auto complete',
      'page callback' => '_dsregion/autocomplete',
      'access arguments' => array('access region autocomplete'),
      'type' => MENU_CALLBACK
    );
    return $items;
}

function _dsregion_autocomplete($string) {
    $matches = array();
    $result = db_select('ds_plz_ort','o')
      ->fields('o',array('ort'))
      ->condition('ort','%'.db_like($string).'%','LIKE')
      ->range(0,10)
      ->execute()
      ->fetchAllKeyed();

    foreach($result as $row){
      $matches[$row->ort]=check_plain($row->ort);
    }
  drupal_json_output($matches);
}
 1
Author: alex, 2012-03-01

1 answers

У вас есть небольшая ошибка в вашем свойстве page callback для пункта меню. Вместо имени функции обратного вызова у вас есть строка, напоминающая путь.

Просто измените

'page callback' => '_dsregion/autocomplete'

До

'page callback' => '_dsregion_autocomplete'

Затем очистите кэш Drupal, и вы должны быть готовы к работе.

 2
Author: Clive, 2012-03-01 22:21:25