Как я могу получить контейнер jquery css, чтобы сообщить пользователю, что данные были успешно введены? - PullRequest
0 голосов
/ 21 мая 2009

Когда пользователь вставляет данные в форму, а затем отправляет их, он переходит к моему php-скрипту и вставляет данные. Сценарий вернет значение, сообщающее пользователю, были ли вставлены данные или нет. Поскольку я использую JQuery, я понятия не имею, как это сделать. Может кто-нибудь, пожалуйста, укажите мне в правильном направлении? Все, что мне нужно, это красивый аккуратный контейнер размером 200 на 25 пикселей, который исчезнет, ​​и пользователь ДОЛЖЕН щелкнуть по нему, чтобы подтвердить его.

Теперь, когда я думаю об этом, так как пользователи не самые яркие огни в гавани, было бы очень здорово, если бы я не только мог показать тогда эту коробку css, сообщив им, была ли вставка успешной, но и показать клиенту это было вставлено в случае, если они забыли, где они остановились.

Спасибо.

Ответы [ 3 ]

4 голосов
/ 21 мая 2009

Я не собираюсь отмечать это как дубликат, но вы, по сути, спрашиваете, как лучше всего показывать уведомления, используя jQuery. И это было задано до . Короче говоря, в вашей базовой установке все, что вам нужно сделать, это показать div и добавить его, но есть много плагинов, которые обрабатывают больше ситуаций.

Чтобы показать клиенту, который был вставлен или что-то еще, все, что вам нужно сделать, это вернуть JSON-ответ от сервера и обработать его с помощью обратного вызова успешной обработки вашего AJAX-запроса. Тогда у вас будет доступ к данным, переданным с сервера.

Чтобы объяснить немного подробнее: вы, похоже, просите сделать, как отправить запрос на сервер с помощью Ajax, получить уведомление о том, что все прошло как положено, а затем отобразить уведомление на веб-странице в зависимости от того, что произошло , Если это правильно, я собираюсь двигаться дальше с этими предположениями.

Давайте составим простую форму, чтобы добавить нового клиента на вымышленный сайт. Это может выглядеть так:

<form action='add_customer.php' method='POST' id='add_customer_form'>
    First Name: <input type='text' name='first_name'><br>
    Last Name: <input type='text' name='last_name'><br>
    Email: <input type='text' name='email'><br>
    <input type='submit' value='Add Customer'>
</form>

Теперь наш наивный, небезопасный PHP-код для обработки этой отправки формы (через AJAX) может выглядеть примерно так. Я говорю наивно и небезопасно, потому что вам нужно больше проверять данные (поскольку вы никогда не доверяете всему, что приходит от клиента), и вам, безусловно, потребуется очистить данные, чтобы предотвратить инъекции SQL. Однако это пример, поэтому он может выглядеть так:

$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
if(mysql_query("
    INSERT INTO customers
    (first_name, last_name, email)
    VALUES 
    ('$first_name','$last_name','$email')
   ")) {
    $success = 1;
    $message = 'Customer ' . $first_name . ' successfully added!';
} else {
    $success = 0;
    $message = 'Something went wrong while adding the customer!';
}
print json_encode(array('success' => $success, 'message' => $message));

Затем мы можем обработать отправку этой формы и получение данных с сервера, используя jQuery, с кодом, который выглядит примерно так:

$(function() {
    $('#add_customer_form').submit(function() { // handle form submit
        var data = $(this).serialize(); // get form's data
        var url = $(this).attr('action'); // get form's action
        var method = $(this).attr('method'); // get form's method
        $.ajax({
            url: url, // where is this being sent to?
            type: method, // we're performing a POST
            data: data, // we're sending the form data
            dataType: 'json', // what will the server send back?
            success: function(data) { // the request succeeded, now what?
                // here data is a JSON object we received from the server
                // data.success will be 0 if something went wrong
                // and 1 if everything went well. data.message will have
                // the message we want to display to the user
                // at this point you would use one of the techniques I linked
                // to in order to display a fancy notification

                // the line below will dynamically create a new div element,
                // give it an ID of "message" (presumably for CSS purposes)
                // and insert the message returned by the server inside of it
                var $div = $('<div>').attr('id', 'message').html(data.message);

                if(data.success == 0) {
                    $div.addClass('error'); // to personalize the type of error
                } else {
                    $div.addClass('success'); // to personalize the type of error
                }
                $('body').append($div); // add the div to the document
            }
        });
        return false; // prevent non-ajax form submission.
    });
});

Я не тестировал ни один из этого кода, но идея есть. Вы возвращаете формат JSON с сервера вместе с данными и обрабатываете обратный вызов, вызванный успешным завершением jQuery, когда запрос завершен, и добавляете в документ элемент, который можете стилизовать так, как вы хотите (и показывать с такими вещами, как fadeIn(), если Вы хотите) с сообщением, описывающим, что произошло. Вам также может понадобиться перехватить сообщение об ошибке (которое срабатывает, если ваш сервер не отвечает по какой-либо причине) и запустить другое предупреждение в этой ситуации.

1 голос
/ 21 мая 2009

Здесь есть над чем поработать ...

Ваш PHP-скрипт выводит это в зависимости от результатов

$json = array(
    'success' => $insertSuccess,
    'message' => $numRecords . ' records inserted in ' . $insertTime . 's'
);

echo json_encode($json);

Затем в обратном вызове вашего JSON вы определяете из анализа объекта JSON, была ли вставка успешной или нет. Ваш обратный вызов может выглядеть примерно так

function(data) {

    success = data.insertedSuccess;

    if (success) {
         $('#success').fadeIn(1000);
    } else {
         $('#failure').fadeIn(1000);
    }

}
1 голос
/ 21 мая 2009

Эффекты затухания могут быть выполнены одним из следующих действий:

jQuery(myDiv).fadeIn()
jQuery(myDiv).fadeOut()
jQuery(myDiv).fadeTo()

Я бы порекомендовал вам сначала создать эту коробку CSS - создать HTML и CSS. Затем вы можете поэкспериментировать с замиранием - jQuery позволяет указать такие аргументы, как цвет замирания, длительность замирания и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...