我最近偶然发现了一个小问题。基本上我试图让我的用户能够在我的网站上搜索某个类别,但搜索是通过AJAX完成的,不会重新加载页面,只是搜索的内容。
以下代码是我到目前为止所提出的,但它唯一会改变的地方是文本框中没有值,除了内容没有被更新(我手动检查了PHP文件)没有错误和用于Firefox的HTTP Direct插件我确保调用我的php文件)
我的代码:
category.php:
<script type="text/javascript">
function showCat(str, cat)
{
if (str=="")
{
document.getElementById("showCategory").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("showCategory").innerHTML=xmlhttp.responseText;
}
}
url="../cat_search.php?q="+str+"&cat="+cat
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
<input type="text" name="showCat" onkeyup="showCat(this.value, <?=$id?>)" style="width: 140px;" />
<div id="showCategory">
## Stuff is being listed here on the load of the page & then should be updated with Ajax
</div>
cat_search.php:
<?php
include("config.php");
include("global.php");
$q=$_GET["q"];
$cat=$_GET["cat"];
$search = $q;
$q = "%".$q."%";
$sql="SELECT * FROM games WHERE title like '$q' AND category = '$cat'";
$result = mysql_query($sql);
if(mysql_num_rows($result) == 0) {
echo "<center><div class=\"redbox\" style=\"width: 110px;\">No match</div></center>";
}
while($row = mysql_fetch_array($result)) {
echo '......';
} ?>
$ id是实际的类别ID。
如果您对我的问题有什么最简单的了解,请告诉我。我使用几乎相同的代码进行其他类型的搜索,它就像一个魅力。
谢谢!
答案 0 :(得分:1)
使用jQuery for AJAX。认真。它非常简单而且无痛苦。那是什么?
$q=$_GET["q"];
$search = $q;
$q = "%".$q."%";
为什么不呢?
$q = '%'.$_GET['q'].'%';
例如,jQuery中的代码:
<script type="text/javascript">
$(document).ready(function(){
$('input[name=showCat]').keyup(function(){
showCat($(this).val(),$(this).attr('id'));
});
});
function showCat(str,cat) {
if (str == '') {
$('#showCategory').html('');
return;
} else {
$.get('../cat_search.php',{q:str,cat:cat},function(data){
$('#showCategory').html(data);
});
}
}
</script>
<input type="text" name="showCat" id="<?=$id?>" style="width: 140px;" />
<div id="showCategory">
## Stuff is being listed here on the load of the page & then should be updated with Ajax
</div>