将一个PHP脚本与另一个PHP文件jQuery和HTML相结合


Combinging a PHP script with another PHP file, jQuery and HTML

我有一个PHP搜索建议脚本,它使用MySQL数据库作为后端,并使用jQuery将内容推送到搜索框页面。PHP目前在suggest.PHP中,我的搜索框在index.PHP上。我想把suggestphp中的PHP脚本放到index.PHP脚本代码中,但它似乎不起作用。为什么会这样?

这是我的suggest.php代码:

<?php
$database=new mysqli('localhost','username','password','database');
if(isset($_POST['query'])){
$query=$database->real_escape_string($_POST['query']);
            if(strlen($query)>0){
                $suggestions=$database->query("SELECT name, value FROM search WHERE name LIKE '%".$query."%' ORDER BY value DESC LIMIT 5");
                if($suggestions){
                    echo '<ul id="suggest">';
                    while($result=$suggestions->fetch_object()){
                        echo '<li>'.$result->name.'</li>';                      
                    }
                    echo '</ul>';
                }
            }
        }
?>

这是我的index.php:代码

<script type='text/javascript' src='js/jquery.js'></script>
<script type='text/javascript'>function lookup(a){if (a.length==0){$("#suggestions").hide();} else {$.post("suggest.php",{query:"" + a + ""},function (b){$("#suggestions").html(b).show();})}};</script>
<form id='search' method='post'>
<input type='text' id='query' onkeyup='lookup(this.value);'>
<div id='suggestions'></div>
</form>

看起来index.php创建了用户使用的界面,但suggest.php返回了查找建议。当你试图获得查找建议时,你不希望界面的另一个副本回来,所以你不能用index.php代替suggest.php

此外,index.php并不是一个真正的php文件,至少从您发布的内容来看是这样。它可能是index.html

一旦一个PHP页面被发送出去,如果@bbg所说的是真的,那么在没有页面刷新的情况下,就无法在其中实现任何进一步的PHP代码。我建议你使用AJAX,它可以发送请求来获得suggest.php脚本,以便在index.php上执行。我还建议你把suggestphp中的代码放在函数中(我认为它们会让代码变得漂亮)。