Проверка нокаута js асинхронный ajax всегда становится недействительным

я использую плагин проверки нокаута, и я не понимаю, как я могу проверить, является ли проверка истинной или ложной

ko.validation.rules['remote'] = {
        async: true,
        validator: function ( val, parms, callback ) { 
            var defaults = {
                url: '/ajax/auth',
                type: 'POST',
                success: callback
            };

            var options = $.extend( defaults, parms );

            $.ajax( options );
        },
        message: 'Default Invalid Message'
    };

var username = ko.observable().extend({ remote : { data: {email : username} }});

// setting it will trigger validation
username.isValidating.subscribe(function(isValid){
     if(isValid){
         // save the username or whatever you do
     }else{
         // invalid 
     }


// ajax.php

function isValidEmail(){
        $data = $this->input->get_post();
        return is_valid_email($data['email']);
};

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


person Anil Gupta    schedule 01.03.2013    source источник
comment
Это не имеет абсолютно никакого отношения к плагину jquery-validate. Удален тег.   -  person Sparky    schedule 01.03.2013


Ответы (1)


Вы должны вызвать данный callback в ответе ajax с true или false, указывающим на успех проверки.

    validator: function ( val, parms, callback ) { 
        var defaults = {
            url: '/ajax/auth',
            type: 'POST',
            success: callback
        };

        var options = $.extend( defaults, parms );

        $.ajax(options, function(data){
            // data format depends on your implementation
            // just for example:
            if (data.result == 'ok') {
                callback(true);
            } else {
                callback(false);
            }
        });
    },
person Rango    schedule 01.03.2013