如何将先行函数插入当前代码中

时间:2014-01-12 11:49:23

标签: php autosuggest typeahead

如何在我当前的代码中插入先行功能(使用远程功能)?

的index.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax Auto Suggest</title>

<script type="text/javascript" src="jquery-1.2.1.pack.js"></script>
<script type="text/javascript">
        function lookup(q) {
                if(q.length == 0) {
                        // Hide the suggestion box.
                        $('#autoSuggestionsList').hide();
                } else {
                        $.post("rpc.php", {queryString: ""+q+""}, function(data){
                                if(data.length >0) {
                                        $('#autoSuggestionsList').show();
                                        $('#autoSuggestionsList').html(data);
                                }
                        });
                }
        } // lookup

        function fill(thisValue) {
                $('#q').val(thisValue);
        }
</script>

<style type="text/css">
        body {
                font-family: Helvetica;
                font-size: 11px;
                color: #000;
        }

        h3 {
                margin: 0px;
                padding: 0px;   
        }

        .suggestionsBox {
                position: relative;
                left: 30px;
                margin: 10px 0px 0px 0px;
                width: 200px;
                background-color: #212427;
                -moz-border-radius: 7px;
                -webkit-border-radius: 7px;
                border: 2px solid #000; 
                color: #fff;
        }

        .suggestionList {
                margin: 0px;
                padding: 0px;
        }

        .suggestionList li {

                margin: 0px 0px 3px 0px;
                padding: 3px;
                cursor: pointer;
        }

        .suggestionList li:hover {
                background-color: #659CD8;
        }
</style>

</head>

<body>


        <div>
                <form>
                        <div>
                                Type your country:
                                <br />
                                <input type="text" size="30" value="" id="q" onkeyup="lookup(this.value);" onblur="fill();" />
                        </div>

                        <div class="suggestionsBox" id="suggestions" >
                                <img src="upArrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" />
                                <div class="suggestionList" id="autoSuggestionsList">
                                        &nbsp;
                                </div>
                        </div>
                </form>
        </div>

</body>
</html>

rpc.php:

<?php

        // PHP5 Implementation - uses MySQLi.
        // mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase');
        $db = new mysqli('localhost', 'root' ,'', 'searchengine');

        if(!$db) {
                // Show error if we cannot connect.
                echo 'ERROR: Could not connect to the database.';
        } else {
                // Is there a posted query string?
                if(isset($_POST['queryString'])) {
                        $queryString = $db->real_escape_string($_POST['queryString']);

                        // Is the string length greater than 0?

                        if(strlen($queryString) >0) {
                                // Run the query: We use LIKE '$queryString%'
                                // The percentage sign is a wild-card, in my example of countries it works like this...
                                // $queryString = 'Uni';
                                // Returned data = 'United States, United Kindom';

                                // YOU NEED TO ALTER THE QUERY TO MATCH YOUR DATABASE.
                                // eg: SELECT yourColumnName FROM yourTable WHERE yourColumnName LIKE '$queryString%' LIMIT 10

                                $query = $db->query("SELECT * FROM searchengine WHERE title LIKE '$queryString%' OR keywords LIKE '%" . $queryString . "%' OR link LIKE '%" . $queryString . "%' LIMIT 4");
                                if($query) {
                                        // While there are results loop through them - fetching an Object (i like PHP5 btw!).
                                        while ($result = $query ->fetch_object()) {
                                                // Format the results, im using <li> for the list, you can change it.
                                                // The onClick function fills the textbox with the result.

                                                // YOU MUST CHANGE: $result->value to $result->your_colum
                                        echo '<li onClick="fill(\''.$result->title.'\');">'.$result->title.'</li>';
                                }
                                } else {
                                        echo 'ERROR: There was a problem with the query.';
                                }
                        } else {
                                // Dont do anything.
                        } // There is a queryString.
                } else {
                        echo 'There should be no direct access to this script!';
                }
        }
?>

我为typeahead函数编写了一些代码,但我不知道在哪里放置它,是否正确以及远程部分的代码。

先行草稿:

<html>

    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" media="screen">
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
    <link href="//raw.github.com/jharding/typeahead.js-bootstrap.css/master/typeahead.js-bootstrap.css" rel="stylesheet" media="screen">
    <script src="//twitter.github.com/typeahead.js/releases/latest/typeahead.min.js"></script>

    <script type="text/javascript">
        $(document).ready(function() {
            $('.q.typeahead').typeahead({                               
                name: "q",                
                remote:                                              
            });
        });
    </script>

</html>

提前致谢。

0 个答案:

没有答案