2013-03-24 109 views
-1

(抱歉,我發佈了一個非常類似的問題早,但它看起來像我原來的問題是有點關閉)修改陣列格式

這裏是我的代碼:

$.ajax({          
     url: 'receive-country.php', //the script to call to get data 
     dataType: 'json',    //data format  
     success: function(data)   //on recieve of reply 
     { 
      var inputArray = data; 
      alert(data); 
      var test_data = {"af":16.63,"al":11.58,"dz":158.97}; 
      jQuery('#vmap').vectorMap({ 
       map: 'world_en', 
       backgroundColor: null, 
       color: '#ffffff', 
       hoverColor: '#eeeeee', 
       hoverOpacity: null, 
       selectedColor: '#dddddd', 
       values: test_data, 
       enableZoom: true, 
       showTooltip: true, 
       scaleColors: ['#C8EEFF', '#006491'], 
       normalizeFunction: 'polynomial' 
      }); 
     } 
    }); 

我通過Ajax接收一些data,我想要顯示在我的jQuery地圖#vmap。我創建了一些test_data,可以與地圖一起使用,但我似乎無法使用與test_data相同的格式獲得data

我不知道到底是什麼陣列格式data是,但是當我提醒它,它出來的:

US,7,US,9,US,10 

我怎樣才能更改格式?


這裏是PHP頁面發送JSON數據:

$country_result = mysql_query("SELECT * FROM happiness ORDER BY id ASC"); 
    $country_array = array(); 
    while($row = mysql_fetch_array($country_result)) { 
    $country_array[] = array($row[4], $row[2]); 
    } 

    echo json_encode($country_array); 

謝謝!

編輯:

這裏是控制檯日誌的屏幕截圖。我不確定如何準確讀取它。 enter image description here

+2

使用'console.log'而不是alert,您將看到數據類型。 – 2013-03-24 22:10:31

+0

真棒,我會檢查。 – 2013-03-24 22:12:45

回答

0

從PHP data來看是最有可能的一個二維陣列看起來像這樣:

[[US,7],[US,9],[US,10]] 

你可以將它轉換成另一種格式是這樣的:

var newData = {}; 
for(var i=0; i<data.length; i++){ 
    newData[data[i][0]] = data[i][1]; 
} 

編輯:其它答案顯示,要做的事顯然是解決問題的PHP方面,而不是在JavaScript方面解決它。我離開我的答案,因爲它可能會增加一些價值。

0

我想你想得到key -> value對。所以,在PHP改線

$country_array[] = array($row[4], $row[2]); 

$country_array[$row[4]] = $row[2]; 

我猜,因爲你追加到PHP中的數組,你在JavaScript中得到實際數據['US', 7, 'US', 9, 'US', 10],不['US':7, 'US':9, 'US':10]因爲你可能預期。

編輯

現在我看到您的更新。無論如何,你得到的是數組的數組,而不是鍵 - 值對的數組(這在JavaScript中是非常標準和常見的)。按照我的建議嘗試。

+0

他正在將數組追加到數組,創建一個二維數組,他新添加的控制檯輸出似乎證實了這一點。 – 2013-03-24 22:18:55

+0

我最近看到並據此編輯了我的答案。 – ceruleus 2013-03-24 22:20:55

0

在你的PHP頁面行

$country_array[] = array($row[4], $row[2]); 

應該

$country_array[] = array($row[4] => $row[2]); 

這會讓你的PHP數組關聯,這將是json_encoded爲JavaScript對象,而不是Javascript數組您目前看到。