使用jQuery和CodeIgniter PHP MVC自动完成

nbnkbykc  于 2023-03-28  发布在  PHP
关注(0)|答案(1)|浏览(106)

我试图从this site使用jQuery插件autocomplete构建一个autocomplete。
现在,我设法实现自动完成使用本地结果预加载到网站作为文档准备功能的一部分,它很容易在本地做。
下面是我的挣扎,从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。
如何使用autocomplete来实现这一点?我的意思是使用原生PHP非常容易(参见this file)。我只需要向搜索文件传递一些东西,比如search?q=p,然后我就会返回结果。由于我使用CodeIgniter,所以事情有点不同,我不会使用上面的jQuery代码检索任何结果。

jjhzyzn0

jjhzyzn01#

在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,

(If你使用的是一个缩小版的自动完成插件,只要搜索. AJAX 并插入适当的行)。
这一更改导致autocomplete脚本现在将通过POST发送表单数据,而不是GET。从codeigniter中访问它可以如下所示:

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

我不确定是否有更好的方法来做到这一点(一个不需要你编辑源代码的方法),但它对我来说很有效。

相关问题