2013-10-30 4 views
1

배경 객체를 전달하는 데 실패합니다 : 여기에 입증 된 바와 같이 나는 choropleth를 만들 D3를 사용하려고 해요 : 내 데이터가오고있다 http://bl.ocks.org/mbostock/4060606d3.js의 d3.xhr (rpcUrl)는 JSON 데이터가

json-rpc api에서.

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

내 방법은 분명히 존재 rpcData에서, 그래서 내가 실제로 모든 오브젝트를 제공하고 있지 않다 나타납니다

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를 얻고있다. 내 문제는 d3.xhr이 어떻게 호출되는지에 대한 오해라고 생각합니다. 모든 단서?

참고 : 배경 정보를 보면 d3.xhr (url) .post()가 queue.js를 사용하여 호출된다는 것을 알 수 있습니다. 문제의 원인에 대한 혼동을 피하기 위해 위의 단순화 된 호출을 제공합니다.

+0

게시물 데이터가 정확한지 확인 했습니까? URL에있는 매개 변수로 GET 요청을 할 수 있다면'd3.json'을 직접 사용할 수 있기 때문에 훨씬 쉽습니다. –

+0

예, POST 데이터가 정확합니다. 크롬을위한 우편 배달부 브라우저 도구와 간단한 파이썬 스크립트를 사용하여 테스트 해 보았습니다. 연결하려는 json-rpc 엔드 포인트에 POST가 필요합니다. 나는 GET을 사용하는 json-rpc 구현을 실행 한 적이 없다고 생각하지만, 나는 단지 달걀이다. – lysdexia

+0

'rpcData'를 문자열로 보지 않고 객체로 보내려고 했습니까 (즉, 따옴표없이)? –

답변

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); 
    }) 
);