2014-03-13 54 views
1

我目前使用HTML/PHP從API獲取JSON文件。然後我想在JavaScript中操縱JSON文件,並在頁面上顯示JSON的某些元素。我可以看到JSON被正確地購回,但在這之後我無法將JSON保存到JavaScript變量中。我的代碼如下。在Javascript中操作PHP中的JSON

<?php 

$pokemon = $_POST['pokemon']; 
$siteaddressAPI = "http://pokeapi.co/api/v1/game/" . $pokemon . "/"; 
$data = file_get_contents($siteaddressAPI); 

echo($data) 

?> 

<!DOCTYPE HTML> 
<html> 
<body> 
<br><br><br><br><br><br><br> 
<p>Created: <span id="created"></span><br></p> 
    <script> 
     var txt = <?php echo ($data); ?>; 
     obj = JSON.parse(txt); 
     document.write("<p>Created: " + obj.created + "</p>"); 
    </script> 
</body> 
</html> 

編輯:我剛剛發現我缺少'在我的txt變量,這已得到修復,但問題仍然存在。

+2

你不需要'JSON.parse',將其刪除。 (並且首先將你的變量'txt'重命名爲'obj',因爲這是你的JSON代碼被JS引擎解釋時得到的結果。) – CBroe

+0

非常好,謝謝!我現在面臨的主要問題是,如果我在document.write或document.getElementById中輸出JSON文件中的某些信息,它將全部以「未定義」的形式出現。 –

回答

2

的API輸出的一個例子是:

{"created": "2013-11-03T19:31:10.975452", "generation": 1, "id": 1, "modified": "2013-11-03T19:31:10.975393", "name": "Red(jpn)", "release_year": 1996, "resource_uri": "/api/v1/game/1/"} 

你不需要JSON.parse,將其刪除。 (和重命名你的變量TXT擺在首位,以OBJ,因爲那是你的JSON代碼得到由JS引擎解釋你做了什麼。)

var obj = <?php echo ($data); ?>; 
document.write("<p>Created: " + obj.created + "</p>"); 

一個例子顯示與下面的控制檯:

+0

太棒了,謝謝!我現在面臨的主要問題是,如果我在document.write或document.getElementById中輸出JSON文件中的某些信息,它將全部以「未定義」的形式出現。 –

+0

所以準確的行'document.write(「

創建:」+ obj.created +「

」);'returns'Created:undefined'?你確定你沒有JSON.parse嗎? –

+0

JSON.parse現在不見了。新行是'document.write(「

創建:」+ obj.created +「

」);'。 –