2016-02-14 83 views
0

我想擁有一個「country」對象的javascript數組,這個對象在這個階段只有兩個屬性:name和geonameId。將php關聯數組解析爲javascript對象

我從一個數據庫中的這些國家,像這樣:

  $sql = "SELECT name, geonameId FROM countryinfo"; 
      $result = $conn->query($sql); 
      if ($result->num_rows > 0) { 
       $rows = array(); 
       while($row = $result->fetch_assoc()) { 
        $country["geonameId"]); 
        $rows[$row['geonameId']] = $row['name']; 
       } 
      } 
      $conn->close(); 
     ?> 

然後我有這個JavaScript腳本,變成了PHP數組到一個javascript之一:

<script type="text/javascript"> 
    var allCountries = <? echo json_encode($rows); ?>; 
    console.log(allCountries); 
</script> 

我只想把這一將鍵/值對排列到對象數組中,以便我可以更輕鬆地訪問將來可能添加的新屬性。目前的JavaScript陣列日誌到控制檯這樣的:

Object {0: "Netherlands Antilles", 49518: "Rwanda", 51537: "Somalia", 69543: "Yemen", 99237: "Iraq", 102358: "Saudi Arabia", 130758: "Iran", 146669: "Cyprus", 149590: "Tanzania", 163843: "Syria", 174982: "Armenia", 192950: "Kenya", 203312:... 

如何鍵/值對的數組轉換爲從JavaScript對象(與重構一個數組,我會加入一個國家類和數組將包含Country對象)。

回答

0

我相關的代碼更改爲這得到它的工作:

$sql = "SELECT name, geonameId FROM countryinfo"; 
    $result = $conn->query($sql); 
    $allCountries = []; 
    if ($result->num_rows > 0) { 
     $rows = array(); 
     while($row = $result->fetch_assoc()) { 
      $country = array(
       "name" => $row['name'], 
       "geonameId" => $row['geonameId'] 
      ); 
      $allCountries[] = $country; 
     } 
    } 
    $conn->close(); 
?> 
<script type="text/javascript"> 
    var allCountries = <?php echo json_encode($allCountries, JSON_PRETTY_PRINT) ?>; 
    console.log(allCountries) 
</script> 
-1

簡單的序列化JSON作爲在PHP結束,然後在Javascript做JSON.parse

+0

如何訪問序列化的PHP對象從JavaScript?我的嘗試是這樣的:'$ jsonObj = json_encode($ rows); $ conn-> close(); ?> <腳本類型= 「文/ JavaScript的」> VAR allCountries = JSON.parse($ jsonObj)' – BeniaminoBaggins

+0

理想的情況下你的PHP腳本應該從蜜蜂XMLHttpRequest的使用客戶端叫那麼你的PHP腳本echo'es的JSON字符串,並使用var myArr訪問json對象= JSON.parse(xmlhttp.responseText);來自responseText屬性 –