来自远程数据源示例的jQuery UI自动完成

时间:2012-02-03 23:41:04

标签: php jquery

我正致力于从远程数据源获取jQuery UI自动完成功能。 http://jqueryui.com/demos/autocomplete/#remote

示例代码调用php脚本search.php

$(function() {
    $( "#birds" ).autocomplete({
        source: "search.php",
        minLength: 2
    });
});

来自search.php的代码段中的第一行

$q = strtolower($_GET["term"]);
if (!$q) return;
$items = array( //set a bunch of key-value pairs);

$q = strtolower($_GET["term"]);究竟是什么意思? !q总是评估为true,导致.php脚本返回,从而阻止脚本的其余部分执行吗?

修改

作为参考,如果你转到http://jqueryui.com/download并下载自动完成包,我引用的确切示例在

中引用
  • development-bundle / demos / autocomplete / search.php
  • 发展束/演示/自动填充/ remote.html

2 个答案:

答案 0 :(得分:4)

strtolower调用获取查询字符串变量term并将其转换为小写;例如search.php?term = TEST结果' test'被保存在$ q。如果您要从区分大小写的来源中检索数据,那么您可能希望这样做以确保两者的期限值都是' test'和' TEST'返回相同的数据。

!$ q测试$ q是否没有值;是因为它没有在URL中传递或者它是空的(search.php?term =)。

您可以使用以下方法测试此逻辑:

<?php
$q = strtolower($_GET["term"]);
echo $q ? '$q was set' : '$q was not set'
?>

输出:

search.php => $q was not set
search.php?term= => $q was not set
search.php?term=TEST => $q was set

答案 1 :(得分:1)

如果未设置$_GET['term'],您发布的php代码段将触发PHP通知 - 例如如果在没有参数的情况下调用search.php

我会这样做:

if(!empty($_GET["term"]))$q = strtolower($_GET["term"]);
else return;
$items = array(...

如果未设置参数,这将使php返回而不是抛出错误。

if(!empty($_GET["term"]))$q = strtolower($_GET["term"]);将检查数组是否包含给定键([term] / search.php?term=something)处的任何数据。这也将隐式检查数组中是否存在密钥 如果term索引上的数组不为空,则会使用内置$_GET["term"]函数将数据从strtolower()转换为小写 如果给定键上为空,则返回 - 从而阻止脚本继续


修改

我也会尝试解释示例代码:

$q = strtolower($_GET["term"]);

将GET参数term转换为小写

if (!$q) return;

如果$ q为NOT true或为空(空值为false),则脚本停止。
如果$ q包含任何内容,它将继续使用该脚本。