переменная успеха jQuery Ajax - PullRequest
1 голос
/ 18 октября 2010

У меня есть следующая функция.Мой PHP-скрипт возвращает массив с элементом error со значением 'ERR':

var updatePaymentType = function(plan_pt_id, pt_id){
    var error = null;
    var data = new Object()
    data["function"]             = "update";
    data["payment_type_id"]      = pt_id;
    data["plan_payment_type_id"] = plan_pt_id;
    data["data"]            = $("#saveform").serializeArray();
    $.ajax({
        type: "POST",
        url: "<?=ROOT_PATH?>/commission/plan/edit/id/<?=$this->editId?>",
        data: data,
        dataType: "json",
        success : function (data)
        {
            error = data['error'];
            alert(error); // All works. Output ERR
        }
    });
    alert(error); // Not work. Output null
    return error;
};

Моя функция должна вернуть ошибкуНо он возвращает null.Большое спасибо.

1 Ответ

6 голосов
/ 18 октября 2010

AJAX-запросы являются асинхронными, то есть значение не устанавливается до тех пор, пока после вы уже вернетесь (обработчик success запускает позже , когда сервер отвечает данными).

To вернуть тип ошибки, который вы должны сделать синхронным с async: false, например:

$.ajax({
    async: false,
    type: "POST",
    ...

Но это блокирует браузер, лучше вызвать любойиспользует значение из вашего success обратного вызова, например:

    success : function (data)
    {
        var error = data['error'];
        functionThatTakesError(error);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...