Я хочу проверить, существует ли имя пользователя в базе данных с помощью jQuery.validate, вот что я имею до сих пор:
JQuery:
$("#signupForm").validate({ rules: { username: { required: true, minlength: 3, remote: "check-username.php" } }, messages: { username:{ remote: "This username is already taken! Try another." } } });
чек-username.php:
<?php require_once "./source/includes/data.php"; header('Content-type: application/json'); $name = mysql_real_escape_string($_POST['username']); $check_for_username = mysql_query("SELECT username FROM mmh_user_info WHERE username='$name'"); if (mysql_num_rows($check_for_username) > 0) { $output = true; } else { $output = false; } echo json_encode($output); ?>
Этот код всегда показывает ошибку, что имя пользователя принято, даже если это не так.
Я использую jQuery Mobile 1.9.1
Заранее спасибо.
Мне удалось заставить это работать, изменив метод PHP, который я использовал, вот мой PHP:
<?php require_once "./source/includes/data.php"; header('Content-type: application/json'); $request = $_REQUEST['username']; $query = mysql_query("SELECT * FROM mmh_user_info WHERE username ='$username'"); $result = mysql_num_rows($query); if ($result == 0){ $valid = 'true';} else{ $valid = 'false'; } echo $valid; ?>
Спасибо всем здесь за вашу помощь 🙂
У меня есть два ресурса, на которые можно смотреть.
Официальный пример из плагина validate: http://jquery.bassistance.de/validate/demo/milk/
Решение для jQuery-форума: http://forum.jquery.com/topic/jquery-validation-plugin-remote-validation-problem-locks-up
Возможное решение заключается в том, что ответ не должен быть json-кодированным, насколько я могу судить. Поскольку json нуждается в парах ключевых значений, высылка только значения не будет работать. Поэтому попробуйте просто повторить это как строки «true» или «false».
Во-вторых, проверка использует GET для метода отправки формы, а не POST.
ПРИМЕЧАНИЕ. ТОЛЬКО НАЙДЕН ВОЗМОЖНЫЙ ВОПРОС РЕШЕНИЯ jQuery Удаленная проверка