Как получить исходные данные, предоставленные для вызова ajax в обратном вызове ajax?

По сути, я перебираю массив изображений. Если у изображения нет источника, оно выполнит ajax-вызов pixabay, чтобы найти изображение элемента и установить URL-адрес для src элемента изображения. Тем не менее, вызов "this" будет ссылаться на вызов ajax вместо элемента изображения. Мой подход сейчас состоит в том, чтобы получить идентификатор элемента элемента из "данных" в "опциях", но это не работает. Я также пытался вызвать "imageOf" изнутри обратного вызова успеха, но это тоже не работает.

$("img").each(function() {
        if (!$(this).attr("src")) {
            var imageOf = $(this).attr("imageOf");

            //get imageURL via ajax call
            var pixabayAPI = "https://pixabay.com/api/";

            $.ajax(pixabayAPI, {
                method: "GET",
                async: false,
                dataType: "json",
                data: {
                    key: "...",
                    q: imageOf,
                    category: "food"
                },
                success: function(result, status, jqXHR) {
                    var images = result.hits;
                    if (images.length > 0){
                        console.log(images[0].webformatURL);
                        $(this).attr("src", images[0].webformatURL);

                        // "this" becomes the ajax call when I want to get the image element instead
                    };
                },
                error: function(e) {
                    console.log(e);
                }
            });
        }
    });

0 ответов

Другие вопросы по тегам