【发布时间】:2018-11-16 10:36:00
【问题描述】:
我不熟悉使用 d3.js (v5) 中的内置方法执行 ajax 请求。这是我的代码:
d3.json(uri).then(data =>console.log(data));
我在一个使用 cookie 身份验证的应用程序中尝试了这个,并不断收到 401 状态代码。使用 chrome 开发工具发现它发送的请求根本没有任何 cookie。
这很奇怪,因为原生 javascript 中的 ajax 请求默认情况下会随每个请求一起发送 cookie。以下是本机 javascript 中的 ajax 请求示例:
function nativeAjax(uri, callback) {
let request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyState === 4) {
callback(request);
}
}
request.open('get', uri, true);
request.send(null);
}
nativeAjax(uri, request => console.log(request.status));
将其插入我的应用程序中,chrome 开发工具显示它确实将身份验证 cookie 与请求一起发送,并且确实 request.status 以 200 的形式返回,表明它确实已通过身份验证。
我的问题是:
- 如何配置
d3.json发送所需的cookie? - 如何按状态捕获响应?例如,我想为 401 响应和 403 响应做一些不同的事情。
- 在哪里可以阅读有关如何使用 d3.json 的更完整文档或示例?我一直在做原生 ajax,因为我不使用 jquery,但如果它是我正在使用的库的一部分,我想学习如何使用它。但是documentation 对此几乎一言不发,page it links to 也无济于事。而且大多数教程都是针对以前版本的 d3 的,不再适用。
【问题讨论】:
标签: javascript json ajax d3.js cookies