#jquery #ajax #callback
#jquery #ajax #обратный вызов
Вопрос:
Я выполняю проверку формы. В функции проверки формы я вызвал ajax-функцию для проверки поля. если возвращаемые данные ajax равны «No», эта функция должна возвращать false. Однако он никогда не ожидает возврата результата ajax. Как я должен справиться с этой проблемой? мой код кнопки:
Код jQuery:
function Checkform() {
var result = true;
$('input:password').each(function() {
if ($(this).val() == "") {
$(this).focus();
$(this).addClass('HighlightBorder');
alert("Please set password.");
result = false;
return false;
}
});
if (!result)
return false;
......
$.post(rootPath "/AjaxPages/SearchAddress.aspx", { "street": street, "city": city, "state": state, "zip": zip, "type": "DPV" }, function(data) {
if (data == "No") {
alert("Invalid company address, did you type in a wrong address?");
result=false;
}
});
return resu<
}
Затем я изменил свой ajax-код на
$.post(rootPath "/AjaxPages/SearchAddress.aspx", { "street": street, "city": city, "state": state, "zip": zip, "type": "DPV" }, function(data) {
if (data == "No") {
alert("Invalid company address, did you type in a wrong address?");
return false;
} else
return true;
Я думаю, что на этот раз возвращаемое значение выполняется после вывода данных, но все равно это не работает.
Комментарии:
1. На этот вопрос легко ответить, но я не буду, пока вы не отформатируете свой код и не поместите его в блок кода. Щелкните
{}
значок в редакторе.2. это научит его, Майк
Ответ №1:
ajax является асинхронным, поэтому вам приходится использовать обратные вызовы.
$.post(rootPath "/AjaxPages/SearchAddress.aspx", { "street": street, "city": city, "state": state, "zip": zip, "type": "DPV" }, function(data) {
if (data == "No") {
alert("Invalid company address, did you type in a wrong address?");
some_callback_function();//callback
}
});
Комментарии:
1. что я должен написать в функции обратного вызова? возвращает false?
2. @steven, ты не можешь выполнять возврат при обратном вызове. просто делайте то, что, по вашему мнению, должно быть сделано в этот момент
3. Но я должен возвращать false, если данные выходят равными «Нет». В противном случае данные формы будут обработаны сервером и перейдут на следующую страницу. Есть идеи?
4. просто всегда
return false
и если сообщение проходит, отправьте форму ($('#form_id').submit()
)5. это не html-страница, это aspx-страница. И эта часть кода находится на дочерней странице, встроенной в главную страницу. Знаете ли вы, как установить onclientclick = «true» для кнопки сервера? Я хочу использовать функцию $ (‘#savebtn’).click()