【问题标题】:jQuery UI autocomplete from remote datasource example来自远程数据源的 jQuery UI 自动完成示例
【发布时间】:2012-02-03 23:41:03
【问题描述】:

我正在努力让 jQuery UI 自动完成功能从远程数据源工作。 http://jqueryui.com/demos/autocomplete/#remote

示例代码调用了一个php脚本search.php

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

来自 search.php 的代码 sn-p 的第一行

$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
  • development-bundle/demos/autocomplete/remote.html

【问题讨论】:

    标签: php jquery


    【解决方案1】:

    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
    

    【讨论】:

      【解决方案2】:

      如果未设置 $_GET['term'],您发布的 php sn-p 将触发 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 索引上不为空,它将使用内置的strtolower() 函数将数据从$_GET["term"] 转换为小写 如果给定键为空,它将返回 - 从而阻止脚本继续


      编辑

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

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

      将 GET 参数 term 转换为小写

      if (!$q) return;
      

      如果 $q 为 NOT true 或为空(空计算为假),则停止脚本。
      如果 $q 包含任何内容,它将继续执行脚本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-18
        • 2011-08-19
        • 2011-09-06
        • 2015-07-04
        • 1970-01-01
        • 2012-10-22
        相关资源
        最近更新 更多