【问题标题】:multipart post request with d3.json()/d3.xhr()使用 d3.json()/d3.xhr() 的多部分发布请求
【发布时间】:2012-12-14 22:54:19
【问题描述】:

目前是否不支持通过请求提交多部分表单数据?

我了解如何使用 d3.json().post() 执行 POST,如 here 所述,但我想使用 POST 通过 multipart/form-data 向 API 提交参数。

我找不到任何关于如何最好地做到这一点的资源,这似乎很奇怪;我最接近的是https://github.com/mbostock/d3/issues/929https://github.com/mbostock/d3/wiki/Requests,但这些并没有真正涵盖多部分表单。

我在 d3.v3.js 中找不到 #929 中描述的功能的未记录部分,它允许使用多部分表单吗?是否有人目前正​​在研究或对这个问题感兴趣?

【问题讨论】:

  • 虽然我已经为这个问题创建了一个合适的解决方法,但如果它被支持它仍然会很好。如果其他人对此有任何疑问并想提交解决方案,请告诉我。
  • 您应该发布您的解决方法作为答案。虽然您可能不想将其标记为已接受(因为听起来您仍然需要更好的解决方案),但它会帮助其他需要的人。

标签: json d3.js


【解决方案1】:

成功的多部分帖子需要三个步骤。

  1. 添加标题Content-type: application/x-www-form-urlencoded
  2. 对表单数据进行编码
  3. 像在 URL 中指定查询字符串一样连接它

然后将其作为 POST 数据发送。

这些都不是 d3 特有的,但我想我会给出我的答案和一些示例代码,因为我来到这里。

示例代码:

var xhr = d3.xhr(post_url)
    .header("Content-type", "application/x-www-form-urlencoded");

xhr.post("arg1=" + encodeURIComponent(arg1) + "&arg2=" + encodeURIComponent(arg2),
  function(error, result) {
    if(error)
        throw new Error(error);
    read_paths.data(JSON.parse(result.responseText));
});

【讨论】:

    猜你喜欢
    • 2012-09-11
    • 2012-05-24
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 2011-01-02
    • 2016-05-22
    • 2018-11-16
    • 1970-01-01
    相关资源
    最近更新 更多