Javascript 使用d3.queue等待AJAX响应

Javascript 使用d3.queue等待AJAX响应,javascript,ajax,d3.js,Javascript,Ajax,D3.js,TL;DR:任何使用AJAX、d3和PHP从数据库获取数据并从中生成图形的好例子都将不胜感激 因此,我使用d3创建一个基于使用AJAX和PHP从数据库中提取的数据的力图,我认为有几种方法可以做到这一点,要么将数据绑定到DOM元素,要么使用d3.queue似乎是最符合逻辑的方法,但我很难找到将所有这些位一起使用的简单示例 因此,我的工作AJAX请求如下所示: $(document).ready(function() { $('select[name="locations"]').c

TL;DR:任何使用AJAX、d3和PHP从数据库获取数据并从中生成图形的好例子都将不胜感激

因此,我使用d3创建一个基于使用AJAX和PHP从数据库中提取的数据的力图,我认为有几种方法可以做到这一点,要么将数据绑定到DOM元素,要么使用d3.queue似乎是最符合逻辑的方法,但我很难找到将所有这些位一起使用的简单示例

因此,我的工作AJAX请求如下所示:

$(document).ready(function() {
        $('select[name="locations"]').change(function(){
            var location = $(this).val();
            $.ajax({
                    type: 'POST',
                    url: 'dataselect.php',
                    data: { l_id: location },
                    success: function (response) {
              console.log(response);
            },      
             });
        });
    });
d3.json("test.php", function(error, graph) {
  if (error) throw error;... Lots more d3 that I don't think is relevant.
我曾尝试将JSON传递给DOM元素,但提取它却没有成功,有些人似乎不喜欢这种方法

d3的工作原理如下:

$(document).ready(function() {
        $('select[name="locations"]').change(function(){
            var location = $(this).val();
            $.ajax({
                    type: 'POST',
                    url: 'dataselect.php',
                    data: { l_id: location },
                    success: function (response) {
              console.log(response);
            },      
             });
        });
    });
d3.json("test.php", function(error, graph) {
  if (error) throw error;... Lots more d3 that I don't think is relevant.
test.php和dataselect.php是相同的,除了dataselect有一个用于AJAX请求的变量,d3不喜欢它

所以,我的问题是,d3在运行之前等待来自AJAX请求的数据的最平滑方式是什么

我猜我需要将一些东西包装在函数中,并将其按某种顺序排列,但我真的很难将它们联系在一起

最后,很抱歉,我觉得这应该是相当琐碎的,但我已经阅读了很多问题,到目前为止还没有实现任何解决方案

编辑:按照d3.request路线,我已经知道了如何在没有AJAX的情况下发送数据:

d3.selectAll("#onploc")
.on('change', function() {
    var location = eval(d3.select(this).property('value'));
console.log(location);//gets value property of selected menu item.


d3.json("dataselect.php?l_id="+location,function(error, data) {
console.log(data);//sends location variable to php to get data back.
})
});

这可以是任何一种方式-您可以从成功回调调用d3绘图代码,例如

...
success: function(response) {
    var data = JSON.parse(response) // maybe, if you need to convert to JSON
    d3RenderFunction(data);
}
或者,您可以使用以下方式传递参数:


谢谢,我将尝试d3请求,我原以为排队会更容易,但我想我搞错了。。。