1

背景:我正在尝试使用 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: "{"jsonrpc":"2.0","error":{"code":"bad_request","message":"JSON RPC requires a 'method' field"}}"

我的方法显然存在于 rpcData 中,所以看来我实际上根本没有提供对象。我怀疑我的问题是误解了 d3.xhr 的调用方式。有什么线索吗?

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

4

1 回答 1

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);
   })
);
于 2014-11-06T13:40:20.637 回答