通过 Queue.Defer 发送查询字符串


如何使用

队列延迟方法发送数据(查询字符串)?

目前我使用 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('&');

最新更新