我有这个ajax请求,我试图找到一些标签并将其添加到搜索结果
当我尝试使用我的php脚本找到某些内容然后找不到任何内容时出现问题
<div>
<form action="search()" method="post">
<label for="tagsearch">Search tags: </label>
<input type="text" id="tagSearch" name="tagsearch"/>
<input type="button" id="tagenter" value="Add tag"/>
</div>
<div id="tagHolder">
<!--Tags here-->
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
function search(){
var tag=$("tagSearch").val();
if(tag!=""){
$("#tagHolder").html();
$.ajax({
type:"post",
url:"gettag.php",
data:"tag="+encodeURIComponent(tag),
success:function(data){
$("#tagHolder").html(data);
$("#tagSearch").val("");
}
});
}
}
$("#tagenter").click(function(){
search();
});
$('#tagSearch').keyup(function(e){
if(e.keyCode == 13){
search();
}
});
});
</script>
上面的代码是ajax请求。
这是php脚本
//Connect to database
$con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
//Check if connection is up
if(mysqli_connect_errno()){
echo "Couldn't connect". mysqli_connect_error($con);
}
$tag = $_POST["tag"];
$result=mysqli_query($con, "SELECT * FROM tags WHERE tag = '".$tag."'");
$found=mysqli_num_rows($result);
if($found>0){
while($row=mysqli_fetch_array($result)){
echo "<div>". $row['tag'] . "</div>";
}
}else{
echo "<div>No suggestions</div>";
}
mysqli_close($con);
我将“无建议”作为搜索结果。我的猜测是SQL查询错误或$ found变量错误。
答案 0 :(得分:1)
这里有几个重大问题。
作为Jeff cryptically points out,您无法正确地从tagSearch
获取价值,因为$("tagSearch")
会查找带有标记名称的元素tagSearch
,而不是id
tagSearch
。要使用id
,请将#
添加到您的选择器中:var tag=$("#tagSearch").val();
这是您所描述问题的主要原因,但请继续阅读,还有很多工作要做。< / p>
您对SQL注入攻击持开放态度。 Humorous example:
在ajax
来电中,data:"tag="+tag
错误。它应该是data:{tag:tag}
(首选)或data:"tag="+encodeURIComponent(tag)
。使用原始代码,如果tag
包含任何在URI编码中没有直接有效的字符(松散地,在URL中),那么您的PHP页面将无法完全接收您发送的内容。当使用一个对象(我的第一个例子)时,jQuery将为你处理它的编码;否则,请使用encodeURIComponent
进行编码。
正如Fred -ii-所指出的那样,您的表单操作有误,当用户按下文本字段中的Enter键时,某些浏览器将尝试使用它。它应该是action="javascript:search()"
,而不仅仅是action="search()"
。后者将被视为URL。
同样Fred -ii-指出,您可能希望关闭form
元素,</form>
以上</div>
。
检查错误
您也没有检查代码中的任何错误,例如error reporting和mysqli_error()
。
这些是您在开发过程中应该使用的重要工具。
答案 1 :(得分:0)
var tag=$("tagSearch").val();
试试var tag=$("#tagSearch").val();
如果你想选择哪个ID是&#34; tagSearch&#34;,请使用$(&#34; #tagSearch&#34;)
jquery中有更多关于selector的内容
http://www.w3schools.com/jquery/jquery_selectors.asp