2011-11-11 216 views
0

我目前正在從php/javascript項目中檢索數據庫中的信息,並對json編碼數據進行編碼。它應該顯示網頁上組合框內數據庫的值。從Javascript獲取JSON數據

在編碼MySQL數據我有以下代碼PHP腳本:

$query = "SELECT pla_platformName as `platform` FROM platforms"; 

    $result = mysql_query($query); 

    if ($result) 
    {  
     while ($myrow = mysql_fetch_array($result)) 
     { 
      $output[] = $myrow;      
     } 

     print json_encode($output); 
     die(); 
    } 

在JavaScript代碼我有以下:

<script> 
     $(document).ready(function() 
     { 
      getPlatforms(); 
      function getPlatforms() 
      { 
       $.post("phpHandler/get-platforms.php", function(json) 
        { 
         alert(json);  
         alert(json.platform); 
        } 
       ); 
      } 
     }); 
    </script> 

我有警報(JSON);其中顯示瞭如下所示的整個json數據:

[{「0」:「hello」,「platform」:「hello」},{「0」:「android」,「platform」 「world」}]

下一個警報(json.platform)我期待它顯示hello或world或兩者,但在這一行上,它一直說未定義。爲什麼這不起作用,我如何獲得特定的平臺,即無論是你好,還是世界。

感謝您提供的任何幫助。

回答

4

您需要首先你JSON字符串轉換爲對象

var data = $.parseJSON(json); 

在這種情況下,返回的對象是一個數組。嘗試

alert(data[0].platform); 

,如果你在你的Ajax調用的dataType選項設置爲json您可以跳過第一步。

$.post("phpHandler/get-platforms.php", function(data) { 
    alert(data[0].platform); 
    }, 
    'json' 
); 

jQuery.post() documentation

4

您的平臺成員是在每個項目上定義的,您必須指定您希望平臺使用的數組項目。這應該是訣竅:

alert(json[0].platform); 

我假設你的json參數實際上包含一個JavaScript對象,而不是簡單的字符串。如果它是一個字符串,你應該在你的php頁面上定義contentType'application/json'。 (我不知道你是如何做到這一點的,因爲我自己爲服務器端做.NET。)

然而,要快速測試它,你可以做一個$ .parseJSON(json)來獲取對象。

+0

感謝您的幫助,但它仍然顯示,而我打字說出來.. :)希望它可以讓你你要去哪裏不確定 – Boardy

+0

喔..別人貼。 :) – Mithon