我在jquery中是全新的。
我有一个简单的问题:我尝试使用php,mysql和jquery进行实时搜索,但它没有显示结果。
html代码:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type = "text/javascript">
function getStates(value){
$.post("getStates.php",{partialState:value}, function(data){
$("#results").html(data);
});
}
</script>
</head>
<body>
<input type = "text" onkeyup = "getStates(this.value)" />
<br>
<div id = "results"> </div>
</body>
</html>
我的php文件名为“getStates.php”:
<?php
$con = mysql_connect("localhost", "root", "")
or die("Failed to connect to the server: " . mysql_error());
mysql_select_db("airlines")
or die("Failed to connect to the database: " . mysql_error());
$partialStates = strtoupper($_POST['partialState']);
$states = mysql_query("select source from flights where source like '%$partialStates%'");
while($row = mysql_fetch_array($states))
{
echo "<div>" . $row['source'] . "</div>";
}
?>
答案 0 :(得分:3)
首先,无论何时执行AJAX请求,您都必须在Web服务器上执行它们! AJAX请求是向服务器发出的HTTP请求,就像您正在加载任何其他网页一样。小心确保字符大小写对于脚本/页面名称是正确的,尤其是在* nix系统上,getStates.php和getstates.php将不相同。 (直接射击来自拉尔夫!)
如果我要这样做,我会在jQuery中完成所有操作(因为你已经使用它),这使你无法在标记中使用任何内联代码,这样更清洁:
<script type="text/javascript">
$(function (){
$(document).on('keyup', '[name="state"]', function() {
var partialState = $(this).val();
$.post("getStates.php",{partialState:partialState}, function(data){
$("#results").html(data);
});
});
});
</script>
确保在删除内联代码时为输入添加名称:
<input type="text" name="state" />
接下来,向您的查询添加错误检查:
$states = mysql_query("select source from flights where source like '%$partialStates%'") or die(mysql_error());
然后参考jQuery AJAX Basics上的这篇文章,了解如何阅读控制台及其数据,以查看查询返回的错误。
另外your script is at risk for SQL Injection Attacks.
你应该stop using mysql_*
functions。已在PHP 7中删除These extensions。了解prepared和PDO的MySQLi语句,并考虑使用PDO,it's really pretty easy。
答案 1 :(得分:2)
&#34;我很好奇。您是否在自己的计算机上以c:///file.php或http://localhost/file.php或.htm?访问它?如果在NIX系统上,getStates.php和getstates.php不一样。共有2种不同的动物。你有安装webserver / PHP吗?你在某个地方托管了某个网站? - 弗雷德-ii- 6分钟前&#34;
和OP
&#34; @ Fred-ii-是的你是对的先生...我正在访问localhost之外的文件....我将文件移动到localhost并再次尝试并且工作正常。谢谢你:) ... Maher Mahmoud 1分钟前&#34;
在评论中看到这个:
&#34; XMLHttpRequest无法加载文件:/// C:/ Users /%D9%81%D8%A7%D8%B7%D9%85%D8%A9 / Downloads / Programs / getStates。 php&#34;
你去吧。由于你的代码在我的机器上运行,我对此有一种感觉。
您需要以http://localhost/file.php
而非c:///file.php
这就是为什么它会向你展示代码&#34; /不执行任何语句而不是解析。
如果像这样访问,Web浏览器将不会解析PHP指令,而不像.html
文件中c:///file.html
确实会显示HTML代码。
另外,每个人都对SQL注入等所说的等等。