Я пытаюсь понять, как я могу превратить это:Использование пульта функцию проверки JQuery
$('#username').blur(function(){
$.post('register/isUsernameAvailable',
{"username":$('#username').val()},
function(data){
if(data.username == "found"){
alert('username already in use');
}
}, 'json');
});
в нечто близкое к этому:
rules: {
username: {
minlength: 6,
maxlength: 12,
remote: {
url: 'register/isUsernameAvailable',
type: 'post',
data: {
'username': $('#username').val()
}
}
}
Однако я с трудом время заканчивая. То, что я хочу, вместо предупреждения, чтобы оно отображало сообщение об ошибке, но я могу установить сообщение внутри фактических сообщений проверки jquery.
http://docs.jquery.com/Plugins/Validation/Methods/remote#options
UPDATE:
По какой-то причине его не делает его как POST его делает это как запрос GET и не знаю, почему. Вот обновленный код:
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:
Теперь я получаю где-то я вернулся, чтобы получить запрос POST. У меня возникают еще две проблемы. Одним из них является тот факт, что для выполнения другого запроса POST пользователь должен обновить форму. И последняя проблема заключается в том, что если возвращенное имя пользователя найдено, оно НЕ отображает сообщение об ошибке.
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!'
}
}
}
}
},
ОБНОВЛЕНИЕ:
public function isUsernameAvailable()
{
if ($this->usersmodel->isUsernameAvailable($this->input->post('username')))
{
return false;
}
else
{
return true;
}
}
ОБНОВЛЕНИЕ 4:
Контроллер:
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;
}
}
МОДЕЛЬ:
/**
* 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;
}
}
Я включил ссылку на удаленной функции. –
Можете ли вы изменить код на стороне сервера? –
Зачем мне это нужно. Я работаю с js side. –