我创建了一些包含d3.json()AJAX函数的泛型函数。
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,3,3,3的答复。
查看我的服务器日志,只有4个请求命中。查看Chrome中的网络标签,我看到了正确的回复数量。但是回调函数会从d3内部多次调用。
更多信息:我正在使用d3 2.4.2。我还替换了d3 / lib中的jQuery版本 - d3附带的jQuery是1.4.2,即使对于最新的d3也是如此。但是,这个jQuery在其AJAX方法中存在严重的内存泄漏,为了解决这个问题,我在jQuery 1.7.2中删除了它。 D3从不抱怨替换,但由于我没有找到关于这个问题的其他信息,我怀疑两个jQueries之间可能没有严格的兼容性。