Javascript 如何通过单击d3.js图形调用ajax

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("

我想调用一个ajax函数将数据从我的图(d3.js强制布局图)发送到rails中的控制器操作

我的图表是从json(来自经典的miserables示例)创建的。我希望允许用户单击一个节点,并为此触发对rails中某个操作的ajax“GET”调用

控制器被称为用户,操作被显示 我想将节点的名称发送回show操作

到目前为止,我已经:

 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);
};