2017-03-22 85 views
0

我有這個d3腳本,它根據向動態API發送的發佈請求的返回JSON結果生成一個表。d3如何在發佈請求中正確傳遞請求正文?

d3.request("https://erudite-master-api-awsmaui.lab.expts.net/erudite/search") 
.header("Content-Type", "application/json") 
.post("intent=data-quality", function (error,data){ 

         function tabulate(data, columns) { 
          var table = d3.select('#response').append('table') 
          var thead = table.append('thead') 
          var tbody = table.append('tbody'); 

          // append the header row 
          thead.append('tr') 
           .selectAll('th') 
           .data(columns).enter() 
           .append('th') 
           .text(function (column) { return column; }); 

          // create a row for each object in the data 
          var rows = tbody.selectAll('tr') 
           .data(data) 
           .enter() 
           .append('tr'); 

        console.log(data) 
         // create a cell in each row for each column 
         var cells = rows.selectAll('td') 
           .data(function (row) { 
           return columns.map(function (column) { 
            return {column: column, value: row[column]}; 
           }); 
           }) 
           .enter() 
           .append('td') 
           .text(function (d) { return d.value; }); 
         return table; 
        } 
         // render the table 
         tabulate(data, d3.keys(data[0])); 

        }); 

當執行這個職位要求的API,這是它是如何預期工作通過輸入參數: example request body example request/response

然而,當我運行該腳本,我得到一個400錯誤代碼回。我想我知道我錯過了哪些可能會傳遞請求正文?不是100%確定。任何幫助表示讚賞。

回答

1

看,我的猜測是:

var data = { 
    "action": "string", 
    "fields": [ 
    "string" 
    ], 
    "filters": {} 
}; 

d3.request("https://erudite-master-api-awsmaui.lab.expts.net/erudite/search?intent=data-quality") 
    .header("Content-Type", "application/json") 
    .post(JSON.stringify(data), function (error,data) { 

    ... 
+0

謝謝 「員額(JSON.stringify(數據)」 正是我需要的。 –

0

嘗試

d3.request("https://erudite-master-api-awsmaui.lab.expts.net/erudite/search") 
    .header("Content-Type", "application/x-www-form-urlencoded") 
    .mimeType("application/json") 
    .post("intent=data-quality", function (error,data){...}); 

如果你期待JSON響應,你可以使用d3.json代替。你curl