Получение JQuery и PHP работать вместе с формами? - PullRequest
0 голосов
/ 21 марта 2011

Итак, у меня простой вопрос, но я не могу найти ответ на него.

У меня есть форма, в которой пользователь вводит что-то в текстовое поле и нажимает кнопку отправки со значением «Добавить».Справа будет список, и каждый раз, когда пользователь нажимает кнопку добавления, в список справа будет добавляться элемент с постепенным исчезновением анимации.

Я использую php для того, чтобы каждый разпользователь нажимает добавить, он запрашивает базу данных и находит то, что ищет пользователь.А если его нет в базе данных, вставьте его в базу данных.

Я использую javascript / jquery, чтобы анимация исчезла, когда пользователь нажимает «Добавить».

Я знаюкак это сделать по отдельности, но когда я нажимаю кнопку «Добавить» (кнопка «Отправить»), обновляется вся страница, php работает нормально, но анимации не было.

Я пытаюсь использовать warnDefault () на jquery, и анимация работает нормально, но код php не регистрируется?Как сделать так, чтобы php и javascript не обрезали друг друга?Это как-то связано с ajax?Спасибо

Ответы [ 2 ]

1 голос
/ 21 марта 2011

Вот пример, который я придумал. Надеюсь, это может быть полезным для вас.

Содержимое 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);
}

Это не проверено, поэтому сообщите мне, если у вас возникнут какие-либо проблемы.

Приветствия

1 голос
/ 21 марта 2011

Вам необходимо использовать функции jjery Ajax. Это сделано специально для того, чтобы вы могли вызывать php-скрипты без обновления страницы.

Нажмите здесь для ознакомления с официальной документацией по функциям почты Ajax и их использованию.

...