Verwendung der Remote-Funktion der JQuery-Validierung

Ich versuche herauszufinden, wie ich das ändern kann:

$('#username').blur(function(){
    $.post('register/isUsernameAvailable', 
           {"username":$('#username').val()}, 
           function(data){
               if(data.username == "found"){
                   alert('username already in use');
               }
           }, 'json');
});

in etwas in der Nähe davon:

rules: {
        username: {
            minlength: 6,
            maxlength: 12,
            remote: {
                url: 'register/isUsernameAvailable',
                type: 'post',
                data: {
                    'username': $('#username').val()
                } 

            }
        }

Es fällt mir jedoch schwer, es zu beenden. Ich möchte, dass anstelle der Warnung die Fehlermeldung angezeigt wird, aber ich kann die Nachricht in die eigentlichen JQuery-Validierungsnachrichten einfügen.

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

AKTUALISIEREN:

Aus irgendeinem Grund wird es nicht als POST ausgeführt, sondern als GET-Anforderung und nicht sicher, warum. Hier ist der aktualisierte Code:

rules: {
        username: {
            minlength: 6,
            maxlength: 12,
            remote: {
                url: 'register/isUsernameAvailable',
                dataType: 'post',
                data: {
                    'username': $('#username').val()
                },
                success: function(data) {
                    if (data.username == 'found')
                    {
                        message: {
                            username: 'The username is already in use!'
                        }
                    }
                }

            }
        },

UPDATE 2:

Jetzt komme ich zurück, um die POST-Anfrage zu erhalten. Ich habe noch zwei Probleme. Eine davon ist die Tatsache, dass der Benutzer das Formular aktualisieren muss, damit eine weitere POST-Anforderung ausgeführt werden kann. Und das letzte Problem ist, dass, wenn der zurückgegebene Benutzername gefunden wird, die Fehlermeldung NICHT angezeigt wird.

rules: {
        username: {
            minlength: 6,
            maxlength: 12,
            remote: {
                type: 'post',
                url: 'register/isUsernameAvailable',
                data: {
                    'username': $('#username').val()
                },
                dataType: 'json',
                success: function(data) {
                    if (data.username == 'found')
                    {
                        message: {
                            username: 'The username is already in use!'
                        }
                    }
                }

            }
        },

AKTUALISIEREN:

public function isUsernameAvailable()
{
    if ($this->usersmodel->isUsernameAvailable($this->input->post('username')))
    {
        return false;
    }
    else
    {
        return true;
    }        
}

UPDATE 4:

Regler:

public function isUsernameAvailable()
{
    if ($this->usersmodel->isUsernameAvailable($this->input->post('username')))
    {
        return false;
    }
    else
    {
        return true;
    }        
}

public function isEmailAvailable()
{
    if ($this->usersmodel->isEmailAvailable($this->input->post('emailAddress')))
    {
        return false;
    }
    else
    {
        return true;
    }        
}

MODELL:

/**
 * Check if username available for registering
 *
 * @param   string
 * @return  bool
 */
function isUsernameAvailable($username)
{
    $this->db->select('username');
    $this->db->where('LOWER(username)=', strtolower($username));
    $query = $this->db->get($this->usersTable);
    if ($query->num_rows() == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

/**
 * Check if email available for registering
 *
 * @param   string
 * @return  bool
 */
function isEmailAvailable($email)
{
    $this->db->select('email');
    $this->db->where('LOWER(email)=', strtolower($email));
    $query = $this->db->get($this->usersTable);
    if($query->num_rows() == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage