jQuery技术

jQueryUI Autocomplete插件使用入门教程(最新版)(2)

字号+ 作者:H5之家 来源:H5之家 2015-10-03 09:16 我要评论( )

在实际应用上,我们的数据源并不是一成不变的。大多数情况下,我们的数据都保存在数据库中,此时,我们就需要使用autocomplete通过AJAX请求获取远程数据作为数据源。 $(#language).autocomplete({source: public.ph

在实际应用上,我们的数据源并不是一成不变的。大多数情况下,我们的数据都保存在数据库中,此时,我们就需要使用autocomplete通过AJAX请求获取远程数据作为数据源。

$("#language").autocomplete({ source: "public.php" });

对应的 ajax-actions.php 的服务器页面代码如下:

<?php header('Content-Type:text/html;charset=UTF-8'); //为了方便举例,这里使用数组来模拟,你也可以在实际应用中从数据库中读取数据 //返回的数据最好是数组或对象类型的JSON格式字符串 $languages = array('Chinese', 'English', 'Spanish', 'Russian', 'French', 'Japanese', 'Korean', 'German'); echo json_encode($languages); ?>

此时,我们再次访问该页面,我们仍然可以看到自动完成的输入效果。

从远程服务器获取数据的自动完成功能

注意:细心的读者可能已经注意到了,不管是从js数组中获取数据,还是从后台服务器获取数据,我们的数据并没有发生变化;但是,我们在从后台获取数据的页面输入"c"时,显示了所有的数据项,而不是如之前一样只显示筛选过滤之后的"Chinese"和"French"。这是因为,当我们从远程请求获取数据时,Autocomplete认为服务器已经进行了过滤处理,返回的数据都是直接可用的,无需再过滤。

在发送AJAX请求时,Autocomplete会把当前输入框中的文字以默认参数名term的形式追加到我们设置的URL地址后面。当我们输入一个c时,Autocomplete实际发送的请求路径为/ajax-actions.php?term=c。

在上面的实例中,由于我们使用的是php数组来模拟服务器返回的数据,没有根据用户的输入来返回对应的数据,才会导致上述结果。如果在实际应用中,使用类似如下SQL语句来查询数据,则不会存在该问题。

<?php // 注意:对于用户输入一般需要进行额外的安全处理 $term = $_GET['term']; $sql = "select column1 as label, column2 as value, ... from table1 where column1 like '$term%'"; $languages = query($sql); echo json_encode($languages); ?>

此外,有些时候我们需要根据用户的输入或其他操作来构造不同的请求URL,我们可以为source指定函数。Autocomplete将用户输入交给该函数,该函数可以进行任何处理,然后把通过任何方式获得的数据交给Autocomplete处理即可。

$("#language").autocomplete({ // 通过函数来获取并处理数据源 source: function(request, response){ // request对象只有一个term属性,对应用户输入的文本 // response是一个函数,在你自行处理并获取数据后,将JSON数据交给该函数处理,以便于autocomplete根据数据显示列表 // 自行处理并获取数据... var dataObj = [...]; // 表示处理后的JSON数据 response(dataObj); // 最后将数据交给autocomplete去展示 } });

运行代码

在上面的讲解中,我们介绍了autocomplete的必需参数选项source。除此之外,还有许多的参数选项可以给我们提供更加强大的其他辅助功能。请参考以下文章:

15 0

我们认为:用户的主要目的,是为了获取有用的信息,而不是来点击广告的。因此本站将竭力做好内容,并将广告和内容进行分离,确保所有广告不会影响到用户的正常阅读体验。用户仅凭个人意愿和兴趣爱好点击广告。
我们坚信:只有给用户带来价值,用户才会给我们以回报。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 强大的jQuery移动插件Top 10

    强大的jQuery移动插件Top 10

    2016-02-25 09:05

  • jQuery Touchwipe Plugin 轻量级的手机触摸特效插件(javascript

    jQuery Touchwipe Plugin 轻量级的手机触摸特效插件(javascript

    2016-02-16 17:04

  • Bracket插件推荐

    Bracket插件推荐

    2016-02-10 11:00

  • 【jQuery基础学习】08 编写自定义jQuery插件

    【jQuery基础学习】08 编写自定义jQuery插件

    2016-02-03 12:01

网友点评
<