Php Jquery:如果表单为空,则加载此查询
我有一些JQuery,它监视一个表单。基本上,对于每个keyup,它都会调用一个php文件来搜索数据库Php Jquery:如果表单为空,则加载此查询,php,jquery,Php,Jquery,我有一些JQuery,它监视一个表单。基本上,对于每个keyup,它都会调用一个php文件来搜索数据库 $(document).ready(function() { $("#faq_search_input").watermark("Begin Typing to Search"); $("#faq_search_input").keyup(function() { var faq_search_input = $(this).val(); va
$(document).ready(function() {
$("#faq_search_input").watermark("Begin Typing to Search");
$("#faq_search_input").keyup(function() {
var faq_search_input = $(this).val();
var dataString = 'keyword='+ faq_search_input;
if (faq_search_input.length > 2) {
$.ajax({
type: "GET",
url: "core/functions/searchdata.php",
data: dataString,
beforeSend: function() {
$('input#faq_search_input').addClass('loading');
},
success: function(server_response) {
$('#searchresultdata').empty();
$('#searchresultdata').append(server_response);
$('span#faq_category_title').html(faq_search_input);
}
});
}
return false;
});
});
这很好,但是它会根据查询过滤#searchresultdata
中的结果。唯一的问题是,如果表单中没有任何内容,我希望它加载所有内容-用户不必单击表单来执行此操作,因此.blur
将无法工作
PHP文件只是:
if(isset($_GET['keyword'])){}
您应该在服务器上处理[*]搜索
$query = "SELECT Image, Manufacturer, Model FROM Device_tbl WHERE Manufacturer LIKE '%$keyword%' OR Model LIKE '%$keyword%";
if ($keyword=='*') $query = "SELECT Image, Manufacturer, Model FROM Device_tbl";
$(document).ready(function() {
$("#faq_search_input").watermark("Begin Typing to Search");
$("#faq_search_input").keyup(function() {
var faq_search_input = $(this).val();
if (faq_search_input =='') faq_search_input ='*';
var dataString = 'keyword='+ faq_search_input;
if (faq_search_input.length > 2 || faq_search_input=='*') {
$.ajax({
type: "GET",
url: "core/functions/searchdata.php",
data: dataString,
beforeSend: function() {
$('input#faq_search_input').addClass('loading');
},
success: function(server_response) {
$('#searchresultdata').empty();
$('#searchresultdata').append(server_response);
$('span#faq_category_title').html(faq_search_input);
}
});
}
return false;
});
$("#faq_search_input").trigger('keyup');
});
如果您最初加载所有结果,那么您是否可以将其存储在JavaScript数组中并使用JavaScript过滤结果?这将在每次按键时为您保存一个HTTP请求,这只会有利于您的站点的速度和资源使用
编辑:示例
<?php
$sql = "SELECT `title` FROM `your_table`";
$res = mysql_query($sql);
$rows = array();
while ($row = mysql_fetch_assoc($res)) {
$rows[] = $row['title'];
}
echo '<script>var data = ' . json_encode($rows) . ';</script>';
?>
<form method="post" action="">
<fieldset>
<input type="text" name="search" id="faq_search_input" />
</fieldset>
</form>
<script>
// I presume you're using jQuery
var searchInput = $('#faq_search_input');
var searchResults = $('#searchresultdata');
var tmpArray = data;
// add all results to results div
$.each(data, function(key, val) {
searchResults.append('<li>' + val + '</li>');
});
searchInput.attr('placeholder', 'Begin typing to search');
searchInput.keyup(function() {
// hide any <li> in your #searchresultdata that don't match input
});
</script>
我想我明白这一点。基本上它只是说如果“关键字”是空的,然后在里面放一个*。唯一的问题是我的查询是:boldSELECT Image,Manufacturer,Model FROM Device_tbl,其中Manufacturer像“%$keyword%”或Model像“%$keyword%”这样。因此,搜索结果是空白的。非常感谢,但是有没有办法强制页面加载?这样,所有结果都会在加载时显示。我想这只是一些JS在加载时提交表单的可能,因为可能会有500多条记录。只是需要弄清楚如何做到这一点,然而,我只是想先让它工作,然后优化它?就个人而言,如果有500多条记录,并且你想根据用户类型进行筛选,那么这将是大量的HTTP请求和数据库调用。很难达到最佳效果。如果我也希望像上面那样进行实时搜索,你认为最好的处理方法是什么?如上所述:执行
选择并获取所有记录,将它们存储在JavaScript数组中,并在每次按键时用JavaScript过滤结果。只有一个HTTP请求和一个数据库调用。它只是使用关键字查询数据库并将结果输出到布局中。我只是在努力弄清楚如何实现您的添加
$query = "SELECT Image, Manufacturer, Model FROM Device_tbl WHERE Manufacturer LIKE '%$keyword%' OR Model LIKE '%$keyword%'";
if ($keyword=='*') $query = "SELECT Image, Manufacturer, Model FROM Device_tbl";
$result=mysql_query($query, $database_connection) or die(mysql_error());
if($result){
if(mysql_affected_rows($database_connection)!=0){
while($row = mysql_fetch_object($result)){
?>
<div class="hold-cont">
<div class="holder">
<div class="image-hold" >
<img class="image-icon" src="<? echo $deviceimg.($row->Image); ?>"/>
</div>
</div>
<div class="device-name devicename-txt"><? echo($row->Manufacturer. ' ' .$row->Model); ?></div>
</div>
<?
}
}else {
echo 'No Results for :"'.$_GET['keyword'].'"';
}
}
}else {
echo 'Parameter Missing';
}