Как реагировать на удаленную проверку jQuery?

Посмотрел несколько вопросов SO и руководство, но не могу найти его. Когда у меня есть

$( "#myform" ).validate({ 
    rules: {
    email: {
      required: true,
      email: true,
      remote: "check-email.php"
    }
  }
});

Как должен мой check-email.php реагировать? Я уже пробовала echo "true", echo true, echo {error: true}, но это не дает правильное сообщение об ошибке.

РЕДАКТИРОВАТЬ

У меня в настоящее время мой php настроен как:

$query = mysql_query("SELECT id FROM users WHERE email='".$_POST['email']."'") or die (mysql_error());
if(mysql_num_rows($query)!=0){
echo json_encode(false);
}else{
echo json_encode(true);
}

Тем не менее, это всегда возвращает истину...

1 ответ

Решение

Цитата ОП:

Как должен мой check-email.php реагировать? Я уже пробовала echo "true", echo true, echo {error: true}, но это не дает правильное сообщение об ошибке.

Это потому что true не вызовет сообщение об ошибке... это обратный ответ.

  • true правильный ответ, когда он действителен (без сообщения об ошибке).

  • Если ответ false, null, undefined или строка (сообщение об ошибке) поле считается недействительным.

Название цитаты:

Как реагировать на удаленную проверку jQuery?

Вы должны прочитать документацию:

Серверный ресурс вызывается через jQuery.ajax (XMLHttpRequest) и получает пару ключ / значение, соответствующую имени проверенного элемента и его значению в качестве параметра GET. Ответ оценивается как JSON и должен быть true для допустимых элементов, и может быть любым false , undefined или же null для недопустимых элементов, используя сообщение по умолчанию; или строка, например. "Это имя уже занято, попробуйте вместо этого peter123", чтобы отобразить сообщение об ошибке.


РЕДАКТИРОВАТЬ:

В соответствии с правками и комментариями...

  • ОП использует $_POST['email'] в своем PHP. Тем не менее, в документации выше указано, что remote метод использует GET по умолчанию.

  • Если вам нужно специальное сообщение об ошибке, вам нужно следовать приведенной выше документации... так что в вашем PHP вместо возврата false... создать сообщение и вернуть его в виде строки.

Другие вопросы по тегам