2015-05-04 2 views
-3

У меня есть образ, который я вызываемую из файла JSONКак создать глобальную переменную для манипулирования вне вызова AJAX

success: function(data) { 
    console.log(data.items[0].thumbnailImage); 

Может кто подскажет, как превратить эту миниатюру в глобальную переменную, можно использовать отображать в тегах html img?

Я просто хочу, чтобы иметь больше контроля над данными JSON, но я не знаю, как манипулировать его пределами АЯКС вызова

Я понимаю, что есть много, чтобы узнать здесь, но пример действительно поможет.

Благодаря

Here is an example I found:

(function($) {

var url = ' http://www.jquery4u.com/scripts/jquery4u-sites.json?callback= ?';

$.ajax({

type: 'GET', url: url, async: false, jsonpCallback: 'jsonCallback', contentType: "application/json", dataType: 'jsonp', success: function(json) { console.dir(json.sites); }, error: function(e) { console.log(e.message); } });

})(jQuery);

The end of this example states that : "The output should be the JSON as an object which we can then use the data for whatever we want without restrictions."

Can you give me some examples of how to use the data for whatever I want without restrictions given the thumbnailimage I have available from my external JSON file I called in the earlier example?

Really all I want to do is be able to take the image and manipulate/display the image in html/css.

+0

Пожалуйста, объясните более подробно, что вы хотите, чтобы иметь возможность сделать. Этот вопрос звучит немного похоже на то, как получить доступ к ответу ajax за пределами обратного вызова успеха .., который идет по неправильной дороге – charlietfl

+0

сохраняет изображения в некоторой папке вашего сервера и пытается получить путь к изображениям и установить путь к src атрибуты тегов img, которые вы хотите. – Robin

ответ

-1

Это расплывчатый вопрос, и, таким образом, мой ответ довольно расплывчатым.

Объявите, что хотите сохранить свое возвращение за пределами вызова AJAX, как массив изображений. Тогда в успехе ручки AJAX, добавьте его в этом хранилище данных и обрабатывать ее, однако, имеет смысл для вас (например, добавлять его, обновлять текущие изображения и т.д.)

var myImages = []; 

function addNewImage(newImage){ 
myImages.push(newImage); 
//do whatever you want with new image here 

} 

$.get('some/url').success(
function(newImage){ 
addNewImage(newImage); 
}) 
0

Первый способ будет определить переменную глобально, затем выполните вызов AJAX, а затем назначьте ответ переменной.

Другим решением было бы установить изображение напрямую. Какой формат имеет ваш ответ? Возможно, вам нужно сделать это:

img.src = data.items[0].thumbnailImage; 
+0

Как применить это к html? Я хочу, чтобы выбрать и выбрать, какой элемент эскиза я хочу отобразить в веб-браузере. Например, я хотел бы отобразить data.item [0] .thumbnailimage и data.item [3] .thumbnailimage на экране. Как мне это сделать? используя этот способ ... успех: функция (данные) {\t \t \t var image = document.querySelector ('img'); \t \t image.setAttribute ('src', data.items [8] .thumbnailImage); \t \t console.log (data.items [0] .thumbnailImage); – Cristien

1

Вы действительно не можете. AJAX является асинхронным - после того, как вы сделаете это XMLHttpRequest, выполнение функции выполняется вне контекста, в котором он вызывается. Асинхронные функции нуждаются в обратных вызовах для завершения, остальные линейные коды, выполненные до и после вызова AJAX, больше не имеют к этому отношения. Любой ответ, в котором говорится, что вы можете просто назначить глобальную переменную внутри (асинхронного) обработчика успеха и использовать ее, не вызывая также функцию, которая использует эту переменную от, обработчик успеха ошибочен.

Этот асинхронный цикл событий обратного вызова является основой базы узлов.js. Об этом не обойтись.

+0

Это правильно, но он не спросил, как объявить глобальную переменную внутри вызова AJAX, как сохранить результат в глобальной переменной. – RafaelKr

+0

Но нет никакой мыслимой точки, если только функция, использующая глобальную переменную, не вызывается из обратного вызова. – Sidd

+0

Хорошо, хорошая точка. Но если он использует картинку только один раз, он должен непосредственно создать изображение. Иначе он ДОЛЖЕН хранить его в переменной вне вызова AJAX, нет? – RafaelKr

Смежные вопросы