2014-02-12 57 views
0

我想用Javascript顯示我的數據庫的一些數據。 這裏是我的PHP腳本:在JavaScript中使用JSON數據庫中的數據

$arrayDatabase = array(); 
$statement = $link->prepare("SELECT project.ID, project.titel, project.subtitel, project.plaatje, project.beschrijving, project.link FROM project"); 
$statement->execute(); 
$statement->bind_result($ID, $titel, $subtitel, $plaatje, $beschrijving, $site); 
while($statement->fetch()){ 
    echo ' 
     <div class="singleProject" id="'.$ID.'"> 
      <img src="'.$plaatje.'" alt="'.$titel.'" /> 
      <div> 
       <h2>'.$titel.'</h2> 
       <div><p>'.$subtitel.'</p></div> 
      </div> 
     </div> 
    '; 
    $arrayRij= array($ID, $beschrijving, $site); 
    array_push($arrayDatabase, $arrayRij); 
} 
$statement->close(); 

但是,如果使用json_encode得到數組的Javascript,它不會工作。

var jsArray = <? echo json_encode($arrayDatabase); ?>; 

編輯:在我的瀏覽器中只有';' var jsArray =

奇怪的是。如果使用我自己的多維數組:

$phpArray = array(array("foo", "bar"), array("foo", "bar")); 

我的腳本可以使用。

+0

嘗試在單獨的腳本中測試javascript並使用ajax調用來獲取json。 – insanityCode

+0

請提供比「無法使用」更好的問題描述。給我們一些有用的信息。 –

回答

1

雖然我也覺得你應該去的AJAX方法(或做任何你想在PHP和輸出做的,而不是在做JS的東西最終的HTML),則可以解決當前的問題是這樣的:

json_encode返回一個字符串不是一個JavaScript對象,所以你需要分析,在JS來獲得真正的對象:

var jsArray = JSON.parse("<? echo json_encode($arrayDatabase); ?>"); 

請注意您可能需要使用JSON填充工具爲這個在舊版本的IE工作。此外,您可能需要從json_encode返回的字符串中轉義引號。

+0

'json_encode'確實返回一個sting,但它直接注入到JS源代碼中,因此它將被解釋爲JS數組或對象字面值。不需要'JSON.parse'。 –

+0

是真的。有一段時間,我認爲我可能會導致與他們的空間的鍵問題,但事實並非如此。 – Quad

0

你可以像這樣從php到javascript獲取JSON數據/對象。

$arr = json_encode($arrayDatabase); 
echo <<<END 
    <script type="text/javascript"> 
    var jsArray = $arr; 
    </script> 
END; 
相關問題