我想使用php和java进行即时搜索,但我不断收到此错误:
Uncaught ReferenceError: searchq is not defined
at HTMLInputElement.onkeydown
所以我希望每次按下键都能激活一个函数,它会在数据库中搜索结果并将结果显示为div.I检查所有内容以确保所有内容都是good.Link .js文件到我的php页面并且我的元素。检查我的代码拼写错误,我找不到我的错误。这是我的代码:
jQuery(document).ready(function ($) {
function searchq(){
var searchTxt = $("input[name='food-search']").val();
$.post("Food-Groups-BG.php", {food_data_bg: searchTxt}, function(output){
$("#food-output").html(output);
});
}
});
<?php
mysqli_connect("localhost","myUsername","myPassword","dbName") or die ("could not connect");
if(isset($_POST['Food-Groups-BG.php'])){
$searchq = $_POST['Food-Groups-BG.php'];
$searchq = preg_replace("#[^0-9a-z]#i","".$searchq);
$query = mysqli_query("SELECT * FROM food_data");
$count = mysqli_num_rows($query);
if($count == 0){
$output = 'Няма намерени резултати!';
}else{
while($row = mysqli_fetch_array($query)){
$fname = $row['title'];
$output .= '<div>'.$fname.'</div>';
}
}
}
echo($output);
?>
<!--**************************************************************
HTML
***************************************************************-->
<p>Търсене на храни: <input type="text" name="food-search" id="food-search-id" onkeydown="searchq();"></p>
答案 0 :(得分:4)
通过在另一个函数(传递给ready())中声明函数 searchq ,您只能在该函数内部使 searchq 可用,而不是全局。我不会在HTML标记中使用 onkeydown 属性,而是使用jQuery绑定事件。
jQuery(document).ready(function ($) {
function searchq(event) {
var searchTxt = $("input[name='food-search']").val();
$.post("Food-Groups-BG.php", {food_data_bg: searchTxt}, function(output){
$("#food-output").html(output);
});
}
$("#food-search-id").on("keydown", searchq);
});
答案 1 :(得分:0)
Ali Yousuf是对的。 newPlace = new Place(newWord);
// ^^^
仅在searchq()
处理程序函数的本地范围内可见,并且无法从外部任何位置访问。因此,您必须删除像Ali Yousuf所说的jquery就绪处理程序,或者像jQuery(document).ready(function ($) {....})
一样定义您的函数以使其可全局访问