У меня есть функция javascript, которая отправляет данные в сценарий проверки и получает значение оттуда.Функция обратного вызова в запросе post возвращает логическое значение, и я пытаюсь получить функцию whole для возврата этого логического значения.Прямо сейчас функция обратного вызова возвращает правильное значение, но сама функция ничего не возвращает.Вот код:
function validate(request_type, request_text) {
$.post("http://www.example.com/ajax/validate.php",{
type: request_type,
text: request_text
}, function(data) {
return (data == "valid");
});
}
Я понимаю, что это своего рода "синхронный" вызов, и это не то, чем занимается AJAX, но у меня уже есть множество функций в validate.php (вызовы базы данных и т. Д.).), что я не могу реализовать в Javascript, и я видел потоки типа этот , которые говорят об использовании какой-либо формы обработчика.
Как бы я написал простой обработчик, который сделает либопеременная data
или результат логического сравнения data == "valid"
, доступный, когда я использую его в операторе if/else
(где должна использоваться эта функция)?
РЕДАКТИРОВАТЬ: Например, одинif
операторов, которые будут использовать логический результат:
if (!validate('password',pass_new)) {
$('#pass_new').addClass('error');
$('#pass_confirm_new').addClass('error');
$(error_string.format('Please enter a valid password.')).insertAfter('#pass_confirm_new');
$('#pass_text_short').hide();
$('#pass_text_long').show();
РЕДАКТИРОВАТЬ: функция, вызванная с событием onsubmit
в моей форме HTML:
function valid_pass_sett() {
//code to remove errors left over from previous submissions - snipped
pass_old = $('input[name=pass_old]').val();
pass_new = $('input[name=pass_new]').val();
pass_confirm_new = $('input[name=pass_confirm_new]').val();
//some if statements that don't involve AJAX requests - snipped
if (!validate('password',pass_new)) {
$('#pass_new').addClass('error');
$('#pass_confirm_new').addClass('error');
$(error_string.format('Please enter a valid password.')).insertAfter('#pass_confirm_new');
$('#pass_text_short').hide();
$('#pass_text_long').show();
return false;
}
return true;
}
У меня естьне редактировал этот код, чтобы включить обновленный код, который был опубликован, но у меня вопрос, как я return false
от него, чтобы остановить отправку формы?