Проверка Ajax Используя jquery? - PullRequest
7 голосов
/ 14 января 2011

Я использую плагин проверки jquery.

В моей форме мне нужно проверить, используется ли никнейм или нет.

Для этого они предоставляют ключ remote для вызова ajax. Для меня работает вызов ajax правильно и возвращает истину или ложь. Но это позволяет, даже если возвращаемое значение ложно, чего не должно быть.

Мой проверочный код выглядит,

$(function() {
    $("#myform").validate({
        rules: {
            fullName: {
                required: true,
                minlength: 5
            },
            nickName: {
                required: true,
                minlength: 4,
                alphaNumeric: true,
                remote: {
                    url: "NickNameChecker",
                    type: "post",
                    data: {
                        nickName: function() {
                        return $("#nickName").val();
                    }},
                    success: function(data) {
                        return data;
                    }
                }
            }
        },
        messages: {
            fullName: {
                required: "Please Enter Your Full Name.",
                minlength: "Full Name should have minimum 5 letters."
            },
            nickName: {
                required: true,
                minlength: "Nick Name should contain minimum 4 letters.",
                remote: "This nickname is already in use."
            }
        }
    });
});

Любые предложения будут благодарны !!!

Спасибо!

Решение:

Решение только в моем коде.

Я просто удалил часть успеха и попробовал. Работает отлично!

Ответы [ 2 ]

1 голос
/ 20 ноября 2013

Команда проверки jQuery посоветовала еще один способ обработки не булевых API в этой проблеме GitHub .

В предлагаемом методе используется свойство jQuery.ajax () dataFilter.

form.validate({
    rules: {
        username: {
            required: true,
            remote: {
                url: "users2.json.php",
                dataFilter: function(data) {
                    var json = JSON.parse(data);
                    if(json.status === "success") {
                        return '"true"';
                    }
                    return "\"" + json.error + "\"";
                }
            }
        }
    }
});
1 голос
/ 20 января 2011

(Расширенное объяснение из комментария выше) :

Параметр success недопустим для удаленной проверки jQuery validate.Вы должны иметь возможность просто указать URL-адрес для доступа для проверки, который возвращает true или ложное значение / сообщение об ошибке:

Серверный ресурс вызывается через $ .ajax (XMLHttpRequest) и получает ключпара значений, соответствующая имени проверенного элемента и его значению в качестве параметра GET.Ответ оценивается как JSON и должен быть истинным для допустимых элементов, и может быть любым ложным, неопределенным или нулевым для недопустимых элементов, используя сообщение по умолчанию;или строка

См. документацию для удаленного для получения дополнительной информации о том, как использовать эту опцию.Ваш код, вероятно, будет выглядеть примерно так:

$(function() {
    $("#myform").validate({
        rules: {
            fullName: {
                required: true,
                minlength: 5
            },
            nickName: {
                required: true,
                minlength: 4,
                alphaNumeric: true,
                remote: {
                    url: "NickNameChecker",
                    type: "post",
                    data: {
                        nickName: function() {
                        return $("#nickName").val();
                    }
                }
            }
        },
        messages: {
            fullName: {
                required: "Please Enter Your Full Name.",
                minlength: "Full Name should have minimum 5 letters."
            },
            nickName: {
                required: true,
                minlength: "Nick Name should contain minimum 4 letters.",
                remote: "This nickname is already in use."
            }
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...