2014-02-17 17 views
0

我用這D3插件:從本地URL http://kamisama.github.io/cal-heatmap/其裝載的JSON數據,我通常在PHP中添加此控件來檢查呼叫是正確的AJAX調用:d3.json它做出什麼樣的要求?

define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'); 

此檢查失敗,我是能夠回溯到d3.json函數。

有人可以向我解釋d3.json做出的請求是什麼樣的?

非常感謝。

編輯:

這是代碼:

 <script type="text/javascript"> 
    var cal = new CalHeatMap(); 
    cal.init(
    { 
     cellSize:15, 
     range: 12, 
     domain: "month", 
     data: '<?php echo $url; ?>', 
     legendHorizontalPosition: 'center', 
     legendCellSize: 15 
    } 
    ); 
    </script> 

$網址是返回JSON的URL。

+0

你想通過ajax更新圖表嗎? –

+0

不,我只是問什麼樣的電話是d3製作。我編輯了代碼。 – 0plus1

+0

我不知道它是做什麼樣的調用。抱歉!其他人可以幫助你。如果將'json'文件加載到d3 cal-heatmap中有任何問題。我想我可以幫你但不確定。 –

回答

2

首先從文檔中不清楚如何處理data。因此,我們可以採取的代碼快速查看(2459線的src \ CAL-heatmap.js)

switch(typeof source) { 
    case "string": 
     if (source === "") { 
      _callback({}); 
      return true; 
     } else { 
      switch(this.options.dataType) { 
      case "json": 
       d3.json(this.parseURI(source, startDate, endDate), _callback); 
       break; 

當我們傳遞一個字符串,而不是它檢查的擴展,使用D3的助手方法的對象,這樣的行爲應該只是如d3.json(),其本身是圍繞d3.XHR()。沒有文件說它發送HTTP_X_REQUESTED_WITH。很多其他的框架都會這樣做,爲什麼你會發現它幾乎是檢測AJAX調用的通用方法,但它不是必需的。

+0

你讓我走在正確的軌道上,有人絆倒了這個,你可以改變上面的行: d3.json(this.parseURI(source,startDate,endDate))。header(「X-Requested-With」, 「的XMLHttpRequest」)得到(_callback)。 \t \t \t \t \t 這將發送標題。 – 0plus1

+0

事實上,我正考慮在d3中更改它,並在我發現有足夠的信息來附加說明這是事實標準後發出拉取請求。 –

+0

雖然看着https://github.com/mbostock/d3/pull/592和https://github.com/mbostock/d3/pull/813,它看起來是要完成的。 –

相關問題