Я пытаюсь предварительно загрузить некоторые изображения с помощью вызова jQuery AJAX, но у меня есть реальные проблемы с передачей строки (url) в функцию в функции успеха вызова AJAX (если это имеет смысл).Передача переменной для функции в jquery AJAX success callback
Вот мой код, как есть стоит:
//preloader for images on gallery pages
window.onload = function() {
setTimeout(function() {
var urls = ["./img/party/"]; //just one to get started
for (var i = 0; i < urls.length; i++) {
$.ajax({
url: urls[i],
success: function(data,url) {
$(data).find("a:contains(.jpg)").each(function(url) {
new Image().src = url + $(this).attr("href");
});
}
});
};
}, 1000);
};
можно увидеть мои (не удалось) попытку прохождения через URL в .each()
вызов - url
заканчивает принимает значение увеличения числа. Не знаете, почему или что это касается, может быть, количество файлов jpg?
... в любом случае, это должно, конечно, взять единственное значение в моем исходном массиве URL.
Благодарим за любую помощь. Кажется, я всегда испытываю зависть с этими обратными вызовами.
PROGESS?
Итак, я сброшенные вокруг немного, принимая внимание замечаний от @ron tornambe и @PiSquared и я в настоящее время здесь:
//preloader for images on gallery pages
window.onload = function() {
var urls = ["./img/party/","./img/wedding/","./img/wedding/tree/"];
setTimeout(function() {
for (var i = 0; i < urls.length; i++) {
$.ajax({
url: urls[i],
success: function(data) {
image_link(data,i);
function image_link(data, i) {
$(data).find("a:contains(.jpg)").each(function(){
console.log(i);
new Image().src = urls[i] + $(this).attr("href");
});
}
}
});
};
}, 1000);
};
Я попытался положить image_link(data, i)
здесь и везде (в каждой вложенной функции и т. д.), но я получаю тот же результат: значение для i
регистрируется только как 3. Я подозреваю, что это связано с тем, что все ссылки на i
указывают на одно и то же, и к тому времени, когда асинхронная задача фактически достигает image_link(data, i)
, цикл for...
выполняется и выполняется с (и, следовательно, имеет значение 3). Излишне говорить, что это дает urls[i]
как 'undefined'.
Любые (более) советы, как я могу обойти это?
Я смущен вторым аргументом (url) в функции успеха. Этот аргумент относится к статусу операции, и вы используете его (по объему) в качестве URL-адреса? –
Да, правильно. Оказывается, я был более смущен! Спасибо за это, я не знал - это объяснит, почему я получаю номера для 'url' в' .each() 'бит. – Jon
Как выглядят возвращенные «данные». Это html? jQuery "contains" возвращает только текст элементов, а не src или hrefs. –