javascript - 循环 javascript get 请求

标签 javascript jquery json dry

我有一个 javascript 101 问题。

我正在使用一个很好的图形库(flot),并在单个页面上绘制多个图形。每个图表都是一个 div,具有一个属性集,告诉图表从哪里获取数据。例如,HTML 可能是:

<div class="line-chart" data-src='/revenue.js'></div>
<div class="scatter-chart" data-src='/users/byweek.js'></div>
<div class="scatter-chart2" data-src='/apps/byweek.js'></div>

这里有两种类型的图表,散点图和折线图。理想情况下,我能够迭代这些类,并简单地获取适当的数据。然而,我对回调的上下文感到困惑,并且不知道我实际上在哪个 div 中,所以我在 JS 中进行了这个 hack:

$(document).ready(function() {

    $('.line-chart').each(function() {
        $.getJSON($(this).attr('data-src'),
        function(data) {
            $.plot($('.line-chart'), [data], { xaxis: { mode: "time" }});
        });
    });

    $('.scatter-chart').each(function() {
        $.getJSON($(this).attr('data-src'),
        function(data) {
            $.plot($('.scatter-chart'), [data], { xaxis: { mode: "time" },
                                                  lines: { show: false },
                                                  points: { show: true }
            });
        });
    });

    $('.scatter-chart2').each(function() {
        $.getJSON($(this).attr('data-src'),
        function(data) {
            $.plot($('.scatter-chart2'), [data], { xaxis: { mode: "time" },
                                                  lines: { show: false },
                                                  points: { show: true }
            });
        });
    });
});

我确信我可以解决这个问题,我只是不清楚如何去做。主要问题是 $.plot 需要应用于调用 getJSON 的特定图表,而不是它找到的第一个图表。

最佳答案

如果您不确定回调的上下文,那么无论如何不使用该上下文可能会更干净。您可以使用 each() 循环的上下文来代替:

$('.line-chart').each(function() {
  var self = $(this);
  $.getJSON(self.attr('data-src'),
    function(data) {
        $.plot(self, [data], { xaxis: { mode: "time" }});
    });
});

关于javascript - 循环 javascript get 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1943216/

相关文章:

javascript - 如何安全地由几个不同的人发布相同的 npm 包?

javascript - 输入标签的自动增量宽度

ios - 如何使用flutter,wordpress在我的应用程序中添加拉动刷新?

json - GWT JsonpRequestBuilder 超时问题

jquery - 如何将 JSON 值存储为 HTML 数据属性中的句子?

javascript - 在没有 try/catch 的情况下检查 CosmosDB 项目是否存在

javascript - 使用 AngularJS 从 Unsplash 预加载随机图像

javascript - jQuery根据输入数字计算总金额

jquery - 从 C# 通用列表解析 json 响应

php - Ajax PHP 创建的表单未提交