如何向d3.xhr调用添加全局侦听器

时间:2015-07-30 11:41:20

标签: javascript ajax d3.js

我们是否可以为d3.xhr调用添加任何全局侦听器,就像我们在ExtJS中一样。 Ext.Ajax.on(“beforerequest”,function(conn,options,eOpts){)};

我尝试使用https://github.com/mbostock/d3/wiki/Requests#on

中指定的'on'

尝试时

    d3.xhr.on("beforesend", function(request){
        console.log("inside on");
    });

我收到了以下错误。 未捕获的TypeError:d3.xhr.on不是函数

尝试下面的代码

    d3.xhr(url, callback).on("beforesend", function(request){
        console.log("inside on");
    });

抛出以下错误。 未捕获的TypeError:无法读取未定义的属性“on”

我是否必须做一些特别的事情来启用听众?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您不需要执行任何特殊操作,但必须使用.get()的长格式来使用.on()处理程序。也就是说,您无法将回调函数作为d3.xhr()的第二个参数提供:

d3.xhr("http://www.example.com") // note no callback function!
.on("beforesend", function(request){
    console.log("inside on");
})
.get(function(error, data) {
    console.log(error, data);
});

完整演示here。另请参阅this example