Как мне проверить, существует ли запись или нет с помощью плагина jQuery Validate? - PullRequest
2 голосов
/ 10 марта 2012

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

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

Я просто хотел создать правило проверки, чтобы проверить, существует ли запись в базе данных или нет. Я также сделал ajax-скрипт типа blow и добавил его, используя $. Validator.addMethod , но он не работает Может кто-нибудь подсказать, пожалуйста, как это сделать?

$.validator.addMethod("check_exists", function(value) {
$.ajax({
    type: "POST",
    url: "xyz.com/check_exists.php",
    data: $( "#frmEdit" ).serialize(),
        success: function(result){
                if(result=="exists")
                   return false;
                else
                   return true;
        },
});
}, 'This record is already exists');

Ответы [ 2 ]

1 голос
/ 10 марта 2012

Плагин валидации имеет встроенную опцию remote, которую вы указываете, и запрос будет отправлен на сервер из плагина. Для того, что вы делаете, нет необходимости создавать совершенно новый метод

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

0 голосов
/ 10 марта 2012

Проблема, с которой вы сталкиваетесь, заключается в том, что (1) вызов AJAX является асинхронным, поэтому метод возвращается до завершения вызова AJAX и (2) операторы return в обработчике обратного вызова возвращаются из обработчика не функция проверки. Самый простой способ исправить это - использовать удаленный метод проверки. Если вы хотите сделать это самостоятельно, вам нужно, чтобы вызов AJAX был синхронным (async: false) и захватывал результат в переменную, которая возвращается из функции.

$.validator.addMethod("check_exists", function(value) {
    var status;
    $.ajax({
        type: "POST",
        async: false,
        url: "xyz.com/check_exists.php",
        data: $( "#frmEdit" ).serialize(),
        success: function(result){
            status = result=="exists";
        },
    });
    return status;
}, 'This record is already exists');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...