2

Twitter ブートストラップ typeahead プラグインを使用して autosuggest フィールドを作成したいと考えています。これが私の現在のコードです。要素の検査コンソールで 500 Internal Server Error を返します。問題はモデルにあると思います。私を助けてください。前もって感謝します。

表示: 登録

<script type="text/javascript">
    $(function() {
        $('#office').typeahead({
            source: function(typeahead, query) {
                $.ajax({
                    url: "<?php echo base_url('main/get_offices'); ?>",
                    type: "post",
                    data: "search=" + query,
                    dataType: "json",
                    async: false,
                    success: function(data) {
                        typeahead.process(data);
                    }
                });
            }
        });
    });

コントローラー:メイン

public function get_offices() {
    $this->load->model('offices');

    $data = $this->offices->get();

    echo json_encode($data);

}

モデル: オフィス

public function get() {
    $office = $this->input->post('search');

    $this->db->select('name');
    $this->db->from('departments');
    $this->db->like('name', $office);
    $query = $this->db->get();

    $office_array = array();
    foreach ($query->result() as $row) {
        $office_array = $row->name;
    }
    //$data['office'] = $office_array;

    return $office_array;
}
4

1 に答える 1

1

関数パラメーターで先行入力を使用してコードを試しましたが、サポートされていないようです。タイプアヘッドを削除し、ajax 呼び出しの範囲外で結果を返すようにコードを書き直しました。

$('#office').typeahead({
  source: function(query) {
    var result = [];
    $.ajax({
      url: "<?php echo base_url('main/get_offices'); ?>",
      type: "post",
      data: "search=" + query,
      dataType: "json",
      async: false,
      success: function(data) {
        alert(data); // verify that you actually get data from the model
        result = data;
      }
    });
    return result;
  }
});

モデル関数 get にタイプミスがあるようです、この部分で

$office_array = array();
foreach ($query->result() as $row) {
    $office_array = $row->name;
}

である必要があります$office_array[]

$office_array = array();
foreach ($query->result() as $row) {
    $office_array[] = $row->name;
}
于 2012-10-04T03:02:58.320 に答える