如何使用
)队列延迟方法发送数据(查询字符串)?
目前我使用 d3.json
来获取静态文件,如下所示。
queue()
.defer(d3.json, "js/file1.json")
.defer(d3.xhr, 'js/file2.json')
.await(callback)
现在,我还需要"GET"一个.php文件,可能通过查询字符串发送一些数据。在 JQuery 中,我做
$.getJSON('ajax/file1.php', {data: some_var}, callback)
因此,我尝试将上述内容包装在一个函数中并将其传递给defer
。
get_paths = function(path) {$.getJSON(path, {data: some_var})}
queue()
.defer(d3.json, "js/world-110m_MC.json")
.defer(get_paths, 'ajax/file1.php')
.await(callback);
但是,不幸的是,根本没有调用回调(尽管我看到两个ajax请求是通过chrome中的网络选项卡发出的
如果要添加查询字符串,可以执行此操作。
queue()
.defer(d3.json, "js/world-110m_MC.json")
.defer(d3.json, 'ajax/file1.php?data=' + $.param(some_var))
.await(callback);
要构建没有 jquery 的查询字符串,如果您有多个参数,您可以使用这样的代码
var params = {
parameter1: 'value1',
parameter2: 'value2',
parameter3: 'value3'
};
var queryString = Object.keys(params)
.map(k => k + '=' + encodeURIComponent(params[k]))
.join('&');