将jQuery自动完成的值发送回PHP

时间:2014-02-12 14:14:14

标签: javascript php jquery mysql jquery-ui-autocomplete

我有点陷入困境,并希望得到任何帮助。

简介 简而言之(我希望):我正在创建一个网站(目前只在本地),它存储了城市名称和一些重要/有趣的值(例如人口,时间,货币)。我使用MySQL数据库来存储数据。其中三个表格与此案例相关:表1.将城市存储为值。表2.存储相关数据的“标题”(人口,当前时间,货币)。第三个表是实际值(10万,12:30,欧元)。我正在使用php在数据库和html之间进行通信。

期望的结果: 搜索框用于查找感兴趣的城市。网页在页面顶部打印选定的城市,并在两个div中打印城市的一些相关数据。

问题 我怎样才能将自动完成的值返回到php,以便根据选择在同一页面上进行三种不同的SQL查询?

我读到你可以使用php -file作为自动完成的源(现在在数组中,从数据库中存储的值),并且某种程度上自动完成可以根据用户的选择检索其他数据。但如果我不使用任何其他jquery-ui组件,它会工作吗?它将如何实际写入代码?

修改

我很快就读到了:

  1. 将其作为POST发送,但可以在同一页面中完成吗?
  2. 使用会话
  3. 使用AJAX
  4. 最简单/最易理解/使用的是什么?

    还有其他建议吗?/ h​​elp?/ tips?

    此时我的堆栈已经溢出。

    摘要

    在同一页面上处理从javascript / jQuery到PHP的通信是一种易于学习和正确的方法是什么?

    代码

    <?php
    require_once "dataPDO.php"; //All of the sql-queries
    $databaseHandler = new dataPDO();
    $list=$databaseHandler->allCities(); //a list of all the cities
    ?>
    <!doctype html>
    <html>
        <head>
            <title>Choose a city</title>
        <meta charset="utf-8">
    
        <!-- needed by autocomplete -->
        <link rel="stylesheet" href="js/jquery.ui.all.css">
        <script src="js/jquery-1.10.2.js"></script>
        <script src="js/jquery.ui.core.js"></script>
        <script src="js/jquery.ui.widget.js"></script>
        <script src="js/jquery.ui.position.js"></script>
        <script src="js/jquery.ui.menu.js"></script>
        <script src="js/jquery.ui.autocomplete.js"></script>
    
        <script>
        $(function() {
            var names=<?php echo json_encode($list); ?>;
            $("#cities").autocomplete({
            source: names, minLength: 2
            });
        });
        $(document).ready(function () {
            $('#cities').on('autocompletechange change', function () {
                var data = $('#city').html('Chosen city: ' + this.value);
            }).change();
        });
    </script>
    </head>
    <body>
        <div>
            <div class="ui-widget">
                <label for="cities">Search for a city:</label>
                <input id="cities">
                <div id="city"></div>
            </div>
        </div>
        <div>
            <section class="left">
                <?php
                    try {
                        $databaseHandler->information(1);//(hardcoded) information belonging to the first city
                    }
                    catch(PDOException $e)
                    {
                        echo $e->getMessage();
                    }
                ?>
    
            </section>
            <section class="right">
                <?php
                    try {
                        $databaseHandler->values(1);//(hardcoded) information values belonging to the first city
                    }
                    catch(PDOException $e)
                        {
                        echo $e->getMessage();
                        }
                ?>
            </section>
        </div>
    </body>
    

1 个答案:

答案 0 :(得分:0)

您当然不需要使用JQuery或其他框架,但是,确实可以使这些类型的事情变得更容易。由于这个原因,RyanS关于使用JQuery的评论很有意义。你只需要重新发明轮子。

基本上,该过程将创建一个PHP文件,通过GET或POST获取一些参数,然后使用这些参数来显示数据。一旦准备好该文件,就可以使用Javascript触发事件来调用该PHP脚本。例如,您可以说某人从下拉菜单中选择一个值,然后将这些参数传递给PHP脚本,并将输出从那里显示到与下拉菜单位于同一页面的div中。