Как заставить программу ждать результата ajax для продолжения обработки? - PullRequest
0 голосов
/ 20 мая 2011

Я делаю проверку формы. В функции проверки формы я вызвал ajax-функцию для проверки поля. если возвращаемые данные ajax равны «Нет», эта функция должна возвращать 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 result;
}

Затем я изменил свой код 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 Ответ

1 голос
/ 20 мая 2011

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
        } 
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...