我的自动完成并没有暗示什么
WHy my autocomplete is not suggesting anything
这是我的php文件。我想为我的文本框自动建议,但它不起作用。我有3-4个自动建议来源。
<?php
$con =mysqli_connect("due connectn attributes");
$return_arr = array();
$search = mysqli_real_escape_string($_GET["term"]);
if (!$search) return;
$sql = "SELECT PName, PNo FROM PlayerDetails WHERE PName LIKE '%$search%'";
$sql = mysqli_query($sql);
while ($row = mysqli_fetch_assoc($sql)){
$row_array['PNo'] = $row['PNo'];
$row_array['PName'] = $row['PName'];
//echo "$PName|$PNo'n";
array_push($return_arr, $row_array);
/* Toss back results as json encoded array. */
echo json_encode($return_arr);
}
mysqli_close($con);
?>
javascript部分:
<script src="/_js/jquery-2.1.3.min.js"></script>
<script src="/_js/jquery-ui.min.js"></script>
<script>
$(document).ready(function() {
$("#auto").autocomplete({
source: "../_php/search.php",
autoFocus:true
}
});
}); //end READY
</script>
HTML部分是:
<p>
<label for="Username">Username:</label>
<input type="text" name="auto" id="auto">
</p>
您有一个语法错误:
$(document).ready(function() {
$("#auto").autocomplete({
source: "../_php/search.php",
autoFocus:true
}); //<----should be closed like this.
});
您不能生成多个JSON编码;这不会得到有效的JSON,jQuery将忽略它。
while ($row = mysqli_fetch_assoc($sql)) {
$row_array['PNo'] = $row['PNo'];
$row_array['PName'] = $row['PName'];
array_push($return_arr, $row_array);
/* Toss back results as json encoded array. */
echo json_encode($return_arr);
}
echo json_encode($return_arr);
必须在mysqli_close
:之后仅发生一次
array_push($return_arr, $row_array);
}/*将结果作为json编码的数组返回*/echo json_encode($return_arr);
另外,为了以防万一,输出JSON内容类型头:
}
/* Toss back results as json encoded array. */
Header("Content-Type: application/json; charset=UTF-8");
die(json_encode($return_arr));
最后,你在评论中报告了这个错误:
<b>Warning</b>: include() [<a href='function.include'>function.include</a>]: Failed opening '../_php/search.php' for inclusion (include_path='.:/usr/local/php-5.3.29/share/pear')
这个错误只能由一件事引起:您必须包括来自PHP的search.php
脚本。也就是说,在你的一些PHP脚本中有一个
include '../_php/search.php';
不能这样做——search.php
必须是一个独立的PHP脚本,如果你从这样的浏览器调用它的URL,它应该返回一个有效的JSON:
http://<yoursite>/_php/search.php?term=%
即,它应该返回类似的东西
[["PnoNumber1":"PNameNumber1"],["PnoNumber2":"PNameNumber2"]]
文件组织(有多种方法)
HTML文件可以放在你想要的任何地方,比如说它在/HTML/page.HTML 中
这个文件包括必需的JS代码,这些代码存在于/_JS,所以/_JS/jquery.min.JS等等
PHP是由HTML中的Javascript代码调用的,如另一个答案中所述。当您在Javascript中包含"search.php"URL时,这将生成一个新的浏览器调用,它在AJAX中有自己的生命周期。这个调用必须能够自己"生活",所以如果你在浏览器的地址栏中使用它,它也必须工作。否则,它也不会在脚本中工作。
因此,为了测试脚本是否工作(当然,你也可以使用Firebug等工具),你可以从浏览器调用它:
http://<yoursite>/_php/search.php?term=%
然后,脚本必须连接到数据库并执行查询,返回自动完成所需格式的有效JSON。因此,为了响应上面的调用,您必须在浏览器窗口中看到一个有效的JSON。
.autocomplete函数与$("#auto")正确绑定,并且输入字段的id确实为"auto"。因此将生成调用。您放在javascript中的URI必须是有效的,并引用javascript,因此,如果表单位于/html/searchpage.html中,而脚本位于/''hp/search.php中,则相对URI将为/_php/search.php(当然,如果表单在/html/forms/search.html中,则需要../../_php/search.php等)。
- 为什么使用AWS Signature v4对S3的REST调用并没有真正使用签名过程
- PhantomJS并没有在每次加载页面时进行所有AJAX调用
- 我的自动完成并没有暗示什么
- 世界的时钟并没有滴答作响
- 因果报应并没有执行测试用例
- $.ajax中的成功并没有被执行
- Mozilla并没有完美地执行这段代码,尽管它适用于Chrome和IE
- Rally App SDK 2.0:Ext.Element 方法“不可选择”并没有那么规范化
- 函数将信息返回到控制台日志,但实际上并没有执行应有的操作
- 扶手并没有填满表格
- Javascript似乎并没有取消隐藏我的元素
- 滑雪者并没有做出反应
- React路由帮助路由实际上并没有跳转到页面
- 元素维度正在DOM中更新,但更改并没有发生;t在调整大小时显示
- 敲除可观察数组并没有更新从数组中移除元素的视图
- javascript(prototype)if元素并没有属性
- Div元素并没有引导点击以启用拖动功能
- 删除项目实际上并没有删除它
- Twit API 回复并没有真正回复
- 我制作的应该向 mysql 表添加条目的 php 页面并没有对表执行任何操作