Javascript 使用d3.queue等待AJAX响应
TL;DR:任何使用AJAX、d3和PHP从数据库获取数据并从中生成图形的好例子都将不胜感激 因此,我使用d3创建一个基于使用AJAX和PHP从数据库中提取的数据的力图,我认为有几种方法可以做到这一点,要么将数据绑定到DOM元素,要么使用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
$(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请求,我原以为排队会更容易,但我想我搞错了。。。