javascript - 如何在单击超链接时触发第二个 AJAX 调用?

标签 javascript jquery ajax

我有一个正在连接的 API。我有一个 index.html 页面,其中有两列。左栏包含图像的缩略图(请参阅 A 部分),右栏将包含单击后有关图像的详细信息。当前同一个 JS 脚本文件中有两个 AJAX 调用(都调用不同的 URL)。

A部分

$.ajax({
    url: 'http://gateway.marvel.com:80/v1/public/characters?limit=5&offset=300&apikey=' + publickey + "&ts=" + ts + "&hash=" + hash,
    method: 'get',
    success: function (res) {
        var characters = res.data.results;
        var index = 0;

        loadCharacters();

        function loadCharacters() {
            if (index > characters.length) {
                index = 0;
                return;
            }

            for (index = 0; index < characters.length; index++) {
                var hero = characters[index];
                var heroID = hero.id;
                var heroName = hero.name;
                var image = hero.thumbnail;
                var image_url = image.path + '.' + image.extension;

                var image_target = $("#comics")

                $('<img>').attr({
                    src: image_url,
                    width: 80,
                    height: 80,
                }).appendTo($('<a>').attr({
                    href: '#?' + heroID,
                    //}).click(dummyCall(hero.id)).appendTo(image_target)); //NOTE: to figure how to pass this hero.id to second ajax call..
                }).appendTo(image_target)); 

                image_target.append("<br/>" + heroName + "<br/>");
            }
        } // end first ajax
    }
});

B 部分

$.ajax({
    url: "https://gateway.marvel.com:443/v1/public/characters/1009269/comics?limit=5&apikey=" + publickey + "&hash=" + hash + "&ts=" + ts,
    method: 'get',
    success: function (res) {
        var comicDetails = res.data.results;
        var index = 0;

        loadComic();

        function loadComic() {
            if (index > comicDetails.length) {
                index = 0;
                return;
            }
            for (index = 0; index < comicDetails.length; index++) {
                var comic = comicDetails[index];
                var comicTitle = comic.title;
                $("#comics").append("<br/>" + comicTitle + "<br/>");
            }
        }
    }
});

B 部分仍然不完整,但对于这个问题的目的来说,它应该足够了。我需要知道一旦用户单击左侧边栏中的锚定图像超链接,如何触发 B 部分。我不希望立即加载 B 部分,因为 B 部分依赖于单击并传递给它的 hero.id(来自 A 部分)。

最佳答案

您需要一个图像的点击处理程序。您可以通过多种方式做到这一点。

直接

$imageElements.on('click', functionThatCallsAjaxB);

或间接与委托(delegate)人

$("#comics").on('click', 'img', functionThatCallsAjaxB);

区别在于,第一个在每个图像上放置一个处理程序,并且当您执行该行时该图像必须存在。第二个是附加到父级的单个处理程序,当其中一个子级发生该事件时,该处理程序会使用react。

我还在您的 ajax A 中看到您想知道如何将信息传递给第二个 ajax 调用。实现此目的的一种方法是使用数据元素。

$element.data('heroId', 'myvalue'); <-- setter
$element.data('heroId') <-- getter

因此,您可以在创建图像时将它们设置在图像上,并在以后引用它们。

关于javascript - 如何在单击超链接时触发第二个 AJAX 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34568622/

相关文章:

javascript - 如何修复index.tsx中的解析错误: Unexpected token,预期 ","?

javascript - 通过 ClassName 获取所有元素并更改 ClassName

javascript - 在这种情况下如何避免声明全局变量?

jquery - HTTP 状态代码 - 称为映射的函数

php - 使用 AJAX + PHP 和 MySQL 查询处理带有复选框的表单

javascript - fadeOut使用jquery动态加载div

php - 提交表单值后,我无法将 URL 重定向到其他网页

javascript并行加载

javascript - 每当触发鼠标悬停时更改 CSS 填充属性的优雅方法?

javascript - 将 onclick 更改图像附加到没有 id 标签的 varing img 数量