2017-11-11 17 views
0

我正在使用JVectormap,並試圖通過AJAX動態加載數據。 我的AJAX調用一個返回結果字符串的PHP腳本。 響應示例:{「US」:「29.84」,「BE」:「24.52」,「FR」:「21.42」,「GB」:「15.66」}在JVectormap中動態加載JSON數據與硬編碼 - 未捕獲TypeError:無法讀取未定義的屬性「元素」

當我使用console.log(dataset)我看到確切的正確字符串作爲上面的例子在控制檯中,但數據沒有加載地理圖表上,我得到的錯誤「遺漏的類型錯誤:無法讀取屬性‘元素’的未定義」

當我複製從控制檯粘貼值並在我的代碼中添加一行代碼 var dataset = {「US」:「29.84」,「BE」:「24.52」,「FR」:「21.42」,「GB」:「15.66」 }; 然後圖表加載完美。

因此,當我硬編碼的值都可以正常工作,但是當我使用動態返回的數據集時,它不起作用,儘管它們是彼此精確的副本。

我的JavaScript代碼,而無需硬編碼值

信息(空地圖並在控制檯上面的mentionned錯誤這個結果):該功能RenderChart(數據集)從它裝載AJAX另一部分叫「數據集」中的數據。因此數據集包含具有國家代碼和值的字符串,您也可以使用console.log(dataset)查看該字符串;

function RenderChart(dataset) 
{ 
    console.log(dataset); 
     $('#world-map').vectorMap({ 
      map: 'world_mill', 
      backgroundColor: "#3C454D", 
      series: { 
       regions: [{ 
        values: dataset, 
        scale: ['#25823b', '#fce853', '#e01402'], 
        normalizeFunction: 'polynomial' 
       }] 
      }, 
      onRegionTipShow: function(e, el, code){ 
       el.html(el.html()+' (Threat - '+dataset[code]+'%)'); 
      } 
     }); 
} 

我與硬編碼值代碼(一個很好的圖表在這一個結果)

function RenderChart(dataset) 
{ 
    console.log(dataset); 
    dataset = {"US":"29.84","BE":"24.52","FR":"21.42","GB":"15.66","DE":"2.81"}; 
     $('#world-map').vectorMap({ 
      map: 'world_mill', 
      backgroundColor: "#3C454D", 
      series: { 
       regions: [{ 
        values: dataset, 
        scale: ['#25823b', '#fce853', '#e01402'], 
        normalizeFunction: 'polynomial' 
       }] 
      }, 
      onRegionTipShow: function(e, el, code){ 
       el.html(el.html()+' (Threat - '+dataset[code]+'%)'); 
      } 
     }); 
} 

回答

0

我已經解決了自己,但想到我會在這裏添加解決方案爲其他人也許有同樣的問題。

儘管PHP代碼返回一個json_encode()值,但它不起作用。 你必須明確定義數據類型:「json」裏面的AJAX請求。

相關問題