d3.js d3.xhr(rpcUrl).post似乎无法传递json数据对象

时间:2013-10-30 21:33:44

标签: d3.js json-rpc queue.js

背景:我正在尝试使用d3创建一个等值区,如下所示: http://bl.ocks.org/mbostock/4060606

我的数据来自json-rpc api。

var rpcUrl = "http://localhost:3001/rpc/json";

var rpcData = '{"params": {}, "jsonrpc": "2.0", "method": "foo.method", "id": "bar"}';

console.log(d3.xhr(rpcUrl).post(rpcData, function(error, data){
    console.log(error);
    console.log(data);
}));

我收到了responseText:

responseText: "{"jsonrpc":"2.0","error":{"code":"bad_request","message":"JSON RPC requires a 'method' field"}}"

我的方法显然在rpcData中,所以看起来我实际上并没有提供对象。我怀疑我的麻烦是误解了如何调用d3.xhr。有线索吗?

注意:如果您正在查看背景信息,您会注意到d3.xhr(url).post()旨在使用queue.js进行调用。我正在提供上面的简化调用,以避免对问题根源的任何混淆。

1 个答案:

答案 0 :(得分:2)

我遇到了d3.xhr.post的同样问题,似乎没有发送任何帖子数据。将content-type标题信息设置为application/json为我修复了它。这是您更新的示例:

var rpcUrl = "http://localhost:3001/rpc/json";
var rpcData = '{"params": {}, "jsonrpc": "2.0", "method": "foo.method", "id": "bar"}';
console.log(d3.xhr(rpcUrl)
  .header("Content-Type", "application/json")
  .post(rpcData, function(error, data) {
     console.log(error);
     console.log(data);
   })
);