JQuery AJAX вызов с асинхронным ложным не работает

Здесь я вставил свой код, я хочу вернуть ответ $ .ajax как ответ функции a (). Но до того, как появится результат вызова ajax, он возвращает пустое f. пожалуйста помогите по этому

a = function()
{
        var f = '';
    $.ajax({
          url: 'http://api.twitter.com/1/statuses/user_timeline.json?screen_name=immaulikvora&count=1&page=1&include_entities=1&callback=?',
          dataType: 'json',
          async: false,
          success: function(data) {
            f = data;
          }
        });    
    return f;
};


var lid = a();

alert(lid);
 devnull6917 окт. 2012 г., 10:41
Обычно я бы сказал: если вы думаете, что вам нужно установитьasync: false Вы уже делаете что-то не так по сути. Почему вам нужно иметь возвращаемое значение в первую очередь?
 Kiquenet03 мар. 2016 г., 16:49
не решение для синхронных вызовов Ajax?
 Maulik Vora17 окт. 2012 г., 10:49
Я хочу использовать ответ API для некоторых моих работ, и переменной lid будет назначен ответ API, и позже я смогу использовать эту переменную для других своих целей. Есть ли другой метод? я могу использовать любой другой метод javascript для вызова моего API?
 b_levitt05 авг. 2015 г., 21:20
@devnull - async: false не всегда неверен - что, если вы уже участвуете в отменяемом событии?
 Furqan Hameedi17 окт. 2012 г., 10:35
посколькуreturn f; не является частью функции успеха, она выполняется даже до функции успеха, которая 'почему ты становишься пустым?f
 Maulik Vora17 окт. 2012 г., 10:37
Да, я знаю, как я могу достичь этой точной функциональности, чтобы вернуть ее после того, как ответ на вызов ajax приходит?

Ответы на вопрос(3)

назначьте ajax объекту jqXHR, и чтение responseText поможет вам.

 var jqXHR=$.ajax({
      url: 'http://api.twitter.com/1/statuses/user_timeline.json?screen_name=immaulikvora&count=1&page=1&include_entities=1&callback=?',
      dataType: 'json',
      async: false
    });    

jqXHR.responseText // This will give you the result
 Kiquenet03 мар. 2016 г., 16:32
Могу ли я использовать для вызова PageMethods?

я бы предположил, что это терпит неудачу, потому что "Междоменные запросы и dataType: "JSONP» запросы не поддерживают синхронную работу. "

Устаревший! = Удален, и, даже если это так, я считаю, что устаревание находится в контексте возвращаемого jqXHR, который здесь не используется

http://api.jquery.com/jQuery.ajax/

Похоже, @Murali предлагает обходной путь, но на вышесказанное важно обратить внимание тех, кто имеет проблемы с запросами в одном домене.

Решение Вопроса

http://api.jquery.com/jQuery.ajax/

Пожалуйста, прочитайте мелкий шрифт.

Начиная с jQuery 1.8, использование async: false с jqXHR ($ .Deferred)осуждается;

Вы должны использовать полные / успешные / ошибочные обратные вызовы.

пытаться

http://jsfiddle.net/UgrLE/

 Neverever17 окт. 2012 г., 10:42
смотри jsfiddlejsfiddle.net/UgrLE
 dansalmo30 окт. 2014 г., 19:39
Я не могу понять, почему это принятый ответ. Проблема не имеет ничего общего с версией. @Murali дал правильный ответ.
 Neverever17 окт. 2012 г., 10:52
без async = false, это 'Почти невозможно присвоить ответ переменной. Вместо этого вы должны спросить себя, что бы вы сделали с ответом, и передать это действие как функцию обратного вызова.
 Strixy19 июн. 2014 г., 17:07
Для дальнейшего чтения по теории проверьте будущее и обещания,en.wikipedia.org/wiki/Futures_and_promises
 Maulik Vora17 окт. 2012 г., 10:36
Я использую 1.6.4
 Maulik Vora17 окт. 2012 г., 10:48
Привет, я проверил это, оно работает, но могу ли я получить ответ, возвращенный переменной lid. Как я могу назначить ответ переменной lid? Пожалуйста, посоветуйте это.
 Maulik Vora17 окт. 2012 г., 10:35
не могли бы вы подсказать, пожалуйста, как я могу использовать обратные вызовы для возврата ответа AJAX-вызова на переменную lid?

Ваш ответ на вопрос