用php和jquery实时搜索?

时间:2016-02-03 17:04:15

标签: javascript php jquery mysql

我在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>";
}

?>

2 个答案:

答案 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。了解preparedPDOMySQLi语句,并考虑使用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注入等所说的等等。