d3.js
  • json-rpc
  • queue.js
  • 2013-10-30 71 views 1 likes 
    1

    背景:我試圖使用D3創建等值線爲證明此: http://bl.ocks.org/mbostock/4060606d3.js d3.xhr(rpcUrl)。員額似乎未能通過JSON數據對象

    我的數據來了從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調用。我正在提供上述簡化呼叫以避免對問題的根源造成混淆。

    +0

    您是否驗證過帳數據是否正確?如果您可以使用URL中的參數發出GET請求,則會更容易,因爲您可以直接使用'd3.json'。 –

    +0

    是的,POST數據是正確的。我已經使用Chrome的postman瀏覽器工具和一個簡單的python腳本對它進行了測試。 我要連接的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); 
        }) 
    ); 
    
    相關問題