Автозаполнение с помощью jquery и codeigniter php MVC - PullRequest
2 голосов
/ 23 января 2010

Я пытаюсь создать автозаполнение с помощью автозаполнения плагина jquery с этого сайта.

Теперь мне удалось добиться автозаполнения, используя локальные результаты, предварительно загруженные на веб-сайт как часть функции готовности документа, это довольно легко сделать локально.

Вот с чем я борюсь, извлекая результаты из php файла. Вот как я пытался:

$("#post_tags").autocomplete("http://localhost/tags/filter", {
    width: 260,
    selectFirst: false,
    highlight: false,
    multiple: true,
    multipleSeparator: " ",
    scroll: true,
    formatItem: function (row, position, totalReturned, searchTerm){
      return row[0];
    },
    formatResult: function(row, position, totalReturned){
      return row[0].replace(/(<.+?>)/gi, '');
    }
 }).result(function(event, data, formatted){
    $("<li>").html( !data ? "No match!" : "Selected: " + formatted)
     .appendTo("#result");
 });

Когда я вручную перехожу на http://localhost/tags/filter/p, я получаю результаты php, asp, потому что они содержат букву p.

Как я могу заставить эту работу работать с автозаполнением, я имею в виду, что это довольно легко, используя нативный php, смотрите этот файл , что означает, что я только передаю что-то в файл поиска, например search?q=p, и получаю результаты, достижения. Поскольку я использую codeigniter, все немного по-другому, и я не получаю никаких результатов, используя код jquery выше.

Я застрял с этим с прошлой ночи, пока не могу предложить щедрость, и мне действительно нужно это в понедельник. Спасибо

1 Ответ

4 голосов
/ 23 января 2010

В вашем файле jquery.autocomplete.js, примерно в строке 360 (начиная с последней версии), добавьте одну строку, чтобы раздел выглядел следующим образом:

$.ajax({ 
    type: "post", // This is the new line
    // try to leverage ajaxQueue plugin to abort previous requests
    mode: "abort",
    // limit abortion to this input
    port: "autocomplete" + input.name,

(Если вы используете минимизированную версию плагина автозаполнения, просто выполните поиск .ajax и вставьте соответствующую строку).

Это изменение приводит к тому, что скрипт автозаполнения теперь будет отправлять данные формы по POST, а не по GET. Доступ к этому из codeigniter может быть сделан следующим образом:

public function filter()
{
    $filter_by = $this->input->post('q');
}

И из этого вы можете создать свой список по мере необходимости. Я не уверен, есть ли более хороший способ сделать это (тот, который не требует, чтобы вы редактировали исходный код), но он работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...