Проверка на стороне сервера с использованием валидатора JQuery (Cakephp) - PullRequest
3 голосов
/ 06 сентября 2011

Привет, я сейчас занимаюсь школьным проектом с использованием cakePHP. У меня есть следующая форма и я предполагаю, что тег формы создан.

<?php echo $form->input('number',array('id'=>"number",'title'=>"Please enter a number with at least 3 and max 15 characters ha!"));?>

<?php echo $form->input('secret',array('id'=>"secret"));?>

<?php echo $form->input('math',array('id'=>"math",'title'=>"Please enter the correct result!"));?>

 <?php echo $form->input('userName',array('id'=>"userName",'title'=>"User Exist"));?>

Я использую проверку на стороне клиента, а вот код, который:

$.validator.addMethod("buga", function(value) {
    return value == "buga";
}, 'Please enter "buga"!');

// this one requires the value to be the same as the first parameter
$.validator.methods.equal = function(value, element, param) {
    return value == param;
};

    $().ready(function() {
    var validator = $("#texttests").bind("invalid-form.validate", function() {
        $("#summary").html("Your form contains " + validator.numberOfInvalids() + " errors, see details below.");
    }).validate({
        debug: true,
        errorElement: "em",
        errorContainer: $("#warning, #summary"),
        errorPlacement: function(error, element) {
            error.appendTo( element.parent("td").next("td") );
        },
        success: function(label) {
            label.text("ok!").addClass("success");
        },
        rules: {
            "data[User][number]": {
                required:true,
                minlength:3,
                maxlength:15,
                number:true 
            },
            "data[User][secret]": "buga",
            "data[User][math]": {
                equal: 11   
            }
        },
                    submitHandler: function(form) {
                        form.submit();
                    }


    });

});

Вышесказанное может выполнить только проверка на стороне клиента для первых трех входов, но мой последний ввод для этого случая может потребовать проверки уникальности имени пользователя. Как я могу сделать AJAX-вызов на сервер? Я просто запутался в этой части. Надеюсь, что кто-то может направить меня.

1 Ответ

5 голосов
/ 16 сентября 2011

В jQuery validate есть специальное правило для проверки на стороне сервера (удаленно)

http://docs.jquery.com/Plugins/Validation/Methods/remote#options

На приведенной выше странице содержится вся информация, необходимая для выполнения запроса, второй пример в значительной степени соответствует вашему варианту использования.

Удаленный скрипт должен возвращать только текст, истина или ложь.
Смотрите эту страницу:

http://jquery.bassistance.de/validate/demo/milk/

Откройте консоль Firebug / Chrome и просмотрите запрос после ввода адреса электронной почты и нажатия кнопки Отправить.

Удачи в вашем проекте.

...