Javascript 如何通过单击d3.js图形调用ajax
我想调用一个ajax函数将数据从我的图(d3.js强制布局图)发送到rails中的控制器操作 我的图表是从json(来自经典的miserables示例)创建的。我希望允许用户单击一个节点,并为此触发对rails中某个操作的ajax“GET”调用 控制器被称为用户,操作被显示 我想将节点的名称发送回show操作 到目前为止,我已经:Javascript 如何通过单击d3.js图形调用ajax,javascript,ruby-on-rails,ajax,d3.js,Javascript,Ruby On Rails,Ajax,D3.js,我想调用一个ajax函数将数据从我的图(d3.js强制布局图)发送到rails中的控制器操作 我的图表是从json(来自经典的miserables示例)创建的。我希望允许用户单击一个节点,并为此触发对rails中某个操作的ajax“GET”调用 控制器被称为用户,操作被显示 我想将节点的名称发送回show操作 到目前为止,我已经: var node = svg.selectAll(".node") .data(graph.nodes) .enter().append("
var node = svg.selectAll(".node")
.data(graph.nodes)
.enter().append("circle")
.attr("class", "node")
.attr("r", function(d) { return d.group * 3; })
.style("fill", function(d) { return color(d.group); })
.call(force.drag)
.on("click", getprofile(d.name));})
.on('dblclick', connectedNodes);
function getprofile(){
$.ajax({
type: "GET",
url: "/users/show" ,
})
};
显然这不起作用。我真的不知道如何将节点的名称传递给ajax。我没有访问所有变量的权限,但我运行了一个精简版本,这似乎可以工作。我换了你的台词:
.on("click", getprofile(d.name));})
到
我不知道您计划在ajax调用中的什么地方插入name变量,但是:
function getprofile(name){
console.log(name);
};
将从节点中的console.log记录您的d.name。您可以在AJAX调用中使用该名称var插入到任何需要它的地方。希望这能有所帮助。好的,那么在ajax调用中,我可以写一些类似数据的东西:{name:JSON.stringify(d.name)}我正在尝试将它传递给控制器,以便我可以通过params[:name]访问数据。我想你不想把JSON.stringify放在对象中,你不想做类似
data:JSON.stringify的事情吗({name:name}
?或者如果您的AJAX contentType已经设置为“application/json”,那么我想只要{name:name}
就行了。另外,您不需要getprofile中的“d.”-函数(正如我编写的)希望参数只被称为“name”。回答得很好,谢谢。排序。现在我只需要对控制器进行排序。
function getprofile(name){
console.log(name);
};