php - 从 Jquery 、 PHP 、 MySQL 字段返回的清除结果

标签 php jquery mysql search

我有一个搜索字段,它允许成员输入客户名称的一部分,并以与 facebook 下拉搜索相同的方式返回结果。不过,我遇到了一些障碍:

  1. 当文本框被清除或成员单击屏幕上的任何其他位置时,返回的结果不会也被清除并停留在页面上,直到刷新或页面退出。这真的很烦人。

JS代码:

<script type="text/javascript">
$(document).ready(function() {

    $("#searchbox").keyup(function() {
        var searchbox = $(this).val();
        var dataString = 'searchword=' + searchbox;

        if (searchbox.length < 3 ) {} else {
            $.ajax({
                type: "POST",
                url: "contact_search/search.php",
                data: dataString,
                cache: false,
                success: function(html) {

                    $("#display").html(html).show();
                }
            });
        }
        return false;
    });
});
</script>

HTML

<input type="text" id="searchbox" maxlength="20" />
<div id="display"></div>

搜索.PHP脚本

<?php
    if($_POST)
    {
        $q=$_POST['searchword'];

            try {
                $db = new PDO('mysql:host=localhost;dbname=DB', 'USER', 'PW');
                $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                $db->beginTransaction();

                $stmt = $db->prepare("SELECT FNAME, LNAME FROM table WHERE FNAME LIKE ? or LNAME LIKE ? ORDER BY ID LIMIT 5");


                $stmt->execute(array('%'.$q.'%', '%'.$q.'%'));

                $foundrows = $db->query("SELECT FOUND_ROWS()")->fetchColumn();

                $db->commit();
            }

            catch (PDOException $e)
            {
                echo "There was a system DB error. <br>".$e->getMessage();          
            }               

        if(isset($foundrows) && $foundrows == 0) {
            echo "<div class='display_box' align='left'>
                No matching results found</div>";
        } else {        

                while($row = $stmt->fetch()) {
                    $fname = $row['FNAME'];
                    $lname = $row['LNAME'];

                    $re_fname='<b>'.$q.'</b>';
                    $re_lname='<b>'.$q.'</b>';

                    $final_fname = str_ireplace($q, $re_fname, $fname);
                    $final_lname = str_ireplace($q, $re_lname, $lname);
    ?>
        <a href="123.php" target="mainFrame" style="text-decoration:none; color:#000;">
        <div class="display_box" align="left">

        <?php echo $final_fname; ?>&nbsp;<?php echo $final_lname; ?><br/>
        </div></a>

    <?php     
                }
        }
    }   
?>

有人遇到过这个问题吗?如果该字段为空或在屏幕的任何其他区域发生点击(除了返回的结果),我如何从我的 php 脚本中清除结果?

注意:

我的页面是用 4 个“页面”框架集(顶部、左侧、中心、中间)构建的,所以这个问题比普通问题稍微复杂一些。当我将修复程序放入我的实际源代码(即 php 页面)时,我遇到了几个“由于内容不安全而被阻止”的错误。

具体来说,我的每个 php 页面的标题都有以下代码,以防止在 https 连接之外登录并允许 session :

<?php
session_start();

if( $_SERVER['SERVER_PORT'] == 80) {
    header('Location:https://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]); 
    die();
} 

?>

最佳答案

您可以将点击事件附加到每个框架的主体元素,并在那里隐藏结果。框架的 dom 可从 window 对象获得,例如:

window.frames['myframe'].document

如果您需要从框架访问窗口对象,请使用:

window.parent

这样您就可以从任何帧访问结果。唯一烦人的是你需要添加代码来隐藏所有帧中的结果。

希望对您有所帮助。

J.

编辑:

澄清一下。如果你想在其中一个框架中隐藏一个 div,你需要在页面的每个框架中都有隐藏代码。假设您的页面有两个框架:搜索结果所在的“mainFrame”和“searchFrame”。

在'mainFrame'中你会有这样的代码:

$(document).click(function() {
    // second parameter sets the context for the selector
    $("#display", window.parent.frames['searchFrame'].document).hide(); 
})

在“searchFrame”中:

$(document).click(function() {
    $("#display").hide(); 
})

关于php - 从 Jquery 、 PHP 、 MySQL 字段返回的清除结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4088346/

相关文章:

php - 用于 Drupal 6 的 Ubuntu 服务器 11.10 和 PHP 5.2

jquery - 我可以检查 CSS 属性是否对 jQuery 有效吗?

mysql - 选择匹配并按日期排序,然后是相关性?

php - 从 MySql 数据库中的 URL 中获取数据

php - C++/PHP 中的网络机器人

php - 广度优先搜索方式的一般树遍历(无限)

javascript - 使用 if、else if、else 语句设置变量的最佳方法是什么

javascript - 如何设置最小列宽Column Resizing Js

mysql - 多级层次访问控制表

mysql - MySQL查询中的查询语法错误