Вы предприняли несколько разных попыток получить данные здесь, и они терпят неудачу по разным причинам. Я объясню почему через секунду, сначала - решение:
Все, что вы делаете с данными, должно быть сделано в функции обратного вызова.
Теперь, почему ваши попытки не работают:
Вы не можете вернуть данные из запроса Ajax.
Ajax работает (обычно), создавая объект XHR, устанавливая обработчик событий для «Когда запрос возвращается», а затем отправляя HTTP-запрос.
Вы не можете вернуть данные из него по той же причине, по которой вы не можете получить объект события, возвращенный из:
var not_the_event = jQuery('foo').click(function (event) { return event; });
Вы не можете установить значение переменной с именем thumb
, которая определена вне функции, внутри функции, которая определяет thumb
с помощью ключевого слова var
. Ключевое слово var
создает новый экземпляр переменной, которая ограничена функцией.
Если вы убрали var
из функции обратного вызова, она все равно не будет работать, потому что у вас будут проблемы с синхронизацией.
Если у вас было:
var not_the_event;
jQuery('foo').click(function (event) { not_the_event = event; });
alert(not_the_event);
Тогда вы будете предупреждать undefined
, поскольку при вызове alert
щелчок не произошел, поэтому переменная не была установлена функцией обработки событий.
При использовании Ajax запрос HTTP не был получен к моменту получения предупреждения, поэтому он также не определен.
Что возвращает нас к следующему: все, что вы делаете с данными, должно быть сделано в функции обратного вызова.
Смысл функции обратного вызова в том, что она вызывается, когда данные готовы. Так что все, что вы делаете с данными, может быть сделано тогда.