Я пытаюсь проверить значение ввода с помощью AJAX. Каждый раз, когда пользователь нажимает клавишу AJAX, отправляется, а затем на основе результата с сервера я добавляю к вводу допустимый или недопустимый класс.jQuery AJAX: неожиданный конец ввода
.js:
$("input[name=username]").keyup(function(event) {
processAJAXCheck(this,"username");
});
$("input[name=username]").change(function(event) {
processAJAXCheck(this,"username");
});
function processAJAXCheck(element, toCheck) {
contentOfInput = $(element).val();
$.ajax({
url: "ajax.php",
type: "POST",
data: {content: contentOfInput, toCheck: toCheck},
success: afterAJAXResponse
});
}
function afterAJAXResponse(data) {
result = $.parseJSON(data);
if(result['toCheck'] != undefined) {
inputSelector = 'input[name='+result['toCheck']+']';
if(result['result'] == true) {
$(inputSelector).removeClass('invalid');
$(inputSelector).addClass('valid');
formValid = true;
} else {
$(inputSelector).removeClass('valid');
$(inputSelector).addClass('invalid');
formValid = false;
}
}
result = null;
}
PHP код:
if(isset($_POST['toCheck']) && isset($_POST['content'])
&& $_POST['toCheck'] != "" && $_POST['content'] != "")
{
require_once 'classes/AAA.php';
require_once 'classes/Database.php';
require_once 'etc/settings.php';
$db = new Database($GLOBALS['db_server'],$GLOBALS['db_name'],$GLOBALS['db_user'],$GLOBALS['db_pass']);
$aaa = new AAA($db);
switch($_POST['toCheck'])
{
case 'email':
$output['result'] = $aaa->isUsableEmail($_POST['content']);
$output['toCheck'] = 'email';
break;
case 'username':
$output['result'] = $aaa->isUsableUsername($_POST['content']);
$output['toCheck'] = 'username';
break;
default:
$output['result'] = 'error';
break;
}
echo json_encode($output);
}
Странным является то, что все работает без проблем при нажатии на любую клавишу символа. Но когда я нажимаю «Tab», чтобы переключиться на другой вход (который использует ту же самую функцию, но не возвращает ошибку - и когда я нажимаю Tab там!) Я получаю следующее сообщение об ошибке:
Uncaught SyntaxError: Unexpected end of input b.extend.parseJSON
jquery-1.9.1.min.js:3 afterAJAXResponse
registration.php?school_id=1&department_id=1:189 b.Callbacks.c
jquery-1.9.1.min.js:3 b.Callbacks.p.fireWith jquery-1.9.1.min.js:3 k
jquery-1.9.1.min.js:5 b.ajaxTransport.send.r
Спасибо за ваш ответы заранее.
Добавить DATATYPE: «» –
JSON Я не думаю, что это вызывает проблемы в этом коде, но вы должны объявлять локальные переменные 'var', например, 'var contentOfInput = ...' – Barmar
@ADASein Если он это делает, он должен удалить явный вызов '$ .parseJSON'. – Barmar