Javascript d3.json()为单个响应多次调用回调

Javascript d3.json()为单个响应多次调用回调,javascript,ajax,json,jquery,d3.js,Javascript,Ajax,Json,Jquery,D3.js,我创建了两个封装d3.json()AJAX函数的通用ish函数 this.getData4 = function(url, returnFunc, param1, param2, param3) { d3.json(url, function(returnData) { if (returnData !== null) { returnFunc(returnData, param1, param2, param3); } }); } 是的,这很难看。请容忍我

我创建了两个封装d3.json()AJAX函数的通用ish函数

this.getData4 = function(url, returnFunc, param1, param2, param3) {
  d3.json(url, function(returnData) {
    if (returnData !== null) {
      returnFunc(returnData, param1, param2, param3);
    }
  });
}
是的,这很难看。请容忍我。在该代码段的第二行和第三行插入断点将向我显示请求已正确发送。例如,我发送4个请求,其中
param1
=0、1、2和3。然后,响应返回到匿名回调函数中,大多数响应将被复制-例如,我可能会返回一系列响应,其中
param1
=1,1,1,0,2,2,2,3,3

查看我的服务器日志,只有4个请求命中。查看Chrome中的“网络”选项卡,我看到了正确数量的响应。但是回调函数从d3内部被多次调用


更多信息:我正在使用D32.4.2。我还替换了d3/lib中的jQuery版本——d3附带的jQuery是1.4.2,即使是最新的d3也是如此。然而,这个jQuery在其AJAX方法中存在严重的内存泄漏,为了解决这个问题,我在jQuery 1.7.2中删除了它。D3从未抱怨过更换,但由于我找不到关于此问题的其他信息,我怀疑这两个jQuery之间可能没有严格的兼容性。

在控制台中尝试此操作以检查版本号:
D3.version
。感谢提供此信息。编辑问题,添加D3版本为2.4.2。我不确定为什么我的d3文件没有像git repo中那样的v2名称。这是因为d3.v2.js更改是在v2.7.5之后进行的。:)顺便说一下,D3不需要jQuery,也不用于AJAX。这听起来更像是代码中的一个怪癖。也许一个可复制的代码示例将有助于获得答案。谢谢您提供的信息。我看看能不能很快想出解决办法。