JQuery: ajax-запрос возвращает значение "undefined" внутри той же функции - PullRequest
0 голосов
/ 08 июля 2011

У меня есть этот кусок кода:

function CallAPI(paramString) {
    var returnVal;
    var jqxhr = $.get(
        "http://url/../"
    )
    .success(function (data) { returnVal = data; })
    .error(function (xhr, ajaxOptions, thrownError) { alert("Error!\n xhr.status = [" + xhr.status + "]\n xhr.statusText: [" + xhr.statusText + "]\najaxOptions = [" + ajaxOptions + "]"); })
    .complete(function () { alert("Request complete."); });

    alert("returnVal: [" + returnVal+ "]");
}

«ReturnVal» в последнем предупреждении возвращается как «undefined», но когда я отлаживаю с Firebug, я вижу ответ на запрос «true» или «false». Значение отправляется обратно из запроса в виде чистой строки, а не в определенном формате (JSON, HTML, ..)

Почему returnVal не возвращает значение ответа на запрос? Спасибо

1 Ответ

1 голос
/ 08 июля 2011

Поскольку вы используете его вне вызова ajax и, поскольку вызовы ajax являются асинхронными, предупреждение всплывает быстрее, чем вы получаете ответ. Вы должны использовать переменную returnVal внутри обработчика success, чтобы быть уверенным, что вы получите значение, возвращаемое ответом.

...