让jquery和php与表单一起工作?

时间:2011-03-20 23:25:53

标签: php jquery ajax forms form-submit

所以我有一个简单的问题,但我找不到答案。

我有一个表单,用户在文本字段中键入内容,然后单击“添加”值的提交按钮。右边会有列表,每次用户点击添加时,右边的列表中都会添加一个淡入淡出动画的元素。

我正在使用php来制作它,以便每次用户点击添加时,它会查询数据库并找到用户正在查找的内容。如果它不在数据库中,则将其插入数据库。

当用户点击“添加”时,我正在使用javascript / jquery来淡化动画。

我知道如何单独执行这些操作,但是当我单击“添加”按钮(提交按钮)时,整个页面刷新,php工作正常,但没有动画。

我尝试在jquery上使用preventDefault(),动画工作正常,但php代码没有注册?我将如何使它,以便PHP和JavaScript不切断对方?这与ajax有什么关系吗?感谢

2 个答案:

答案 0 :(得分:1)

您需要使用jquery Ajax函数。这些是特别制作的,这样你就可以在没有页面刷新的情况下调用php脚本。

Click Here获取有关Ajax帖子功能的官方文档,以及如何使用它们。

答案 1 :(得分:1)

这是我想出的一个例子。希望这对你有所帮助。

index.php

的内容

这是您的表单所在的位置以及显示添加项目的位置。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <title>Page Title</title>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
        <script type="text/javascript">
        <!--
            jQuery(function($) {
                // Declare DOM elements for quick access
                var itemsList = $('#items-list'),
                    searchInput = $('#search-input');

                // click event handler for the 'Add' button
                $('#add-btn').click(function(e) {
                    // Prevent the form from being sent
                    e.preventDefault();

                    var searchValue = searchInput.val();

                    // Send the AJAX request with the search parameter
                    $.post('search.php', {
                            search: searchValue
                        },
                        function(data, textStatus) {
                            // data is returned as a json object
                            if (data.found) {
                                // Create a new hidden element into the list
                                // and make it fade in
                                $('<p class="item">'+searchValue+'</p>').hide()
                                    .appendTo(itemsList)
                                    .fadeIn();
                            }
                        }, 'json'
                    });
                });
            });
        //-->
        </script>
    </head>
    <body>
        <form action="index.php" method="post" id="search-form">
            <div>
                <input type="text" name="search" id="search-input"> 
                <input type="submit" id="add-btn" value="Add">

                <div id="items-list"></div>
            </div>
        </form>
    </body>
</html>

search.php

的内容
<?php

// AJAX Request?
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    // Prepare the reponse
    $response = array('found' => FALSE);

    // Check that the search parameter was provided
    $search = filter_input(INPUT_POST, 'search', FILTER_SANITIZE_STRING);

    if (!empty($search)) {
        // Note: We'll assume a connection to a MySQL database
        // with the following constant already declared
        $mysqli = new mysqli(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_NAME);

        // Make sure that the connection was successful
        if (!$mysqli->connect_error) {
            $query = "SELECT id, keyword FROM search_table WHERE keyword = ?";

            // Check if the search keyword already exists
            $stmt = $mysqli->prepare($query);
            $stmt->bind_param('s', $search);
            $stmt->execute();

            // Create a new entry if not found
            if (0 == $stmt->num_rows()) {
                $query = "INSERT INTO search_table(keyword) VALUES(?)";

                $stmt = $mysqli->prepare($query);
                $stmt->bind_param('s', $search);

                $response['found'] = $stmt->execute();
            }
            else {
                $response['found'] = TRUE;
            }
        }
    }

    echo json_encode($response);
}

未经测试,如果您遇到任何问题请与我联系。

干杯,