2013-02-09 51 views
0

我想用PHP運行一個存儲過程。我想把查詢的結果放到一個javascript對象中。我無法找到如何完成此操作。我已經運行了這段代碼,但是我得到的結果之一是我沒有定義。這裏是我的代碼:使用PHP來運行查詢並將其放置在一個JavaScript對象中

$result = mysql_query("call sp_getGenre()"); 
    if($result === FALSE){ 
      die(mysql_error()); 
     } 
     while($row = mysql_fetch_array($result)){ 
    ?> 
      <script type="text/javascript"> 
       console.log(<? $row['Type'] ?>); 
       var genreObj = new Object(); 
       genreObj.name = "<? echo $row['Type'] ?>"; 
       genreObj.level = <? echo $row['Level'] ?>; 
    <? 
       $parentID = $row['PrevID']; 
       if($parent == null){ $parent = "0"; } 
    ?> 
       genreObj.parent = <? $parent ?>; 
       arrGenre.push(genreObj); 
      </script> 
    <? 
     } 
    ?> 

我對PHP世界相當陌生,但會非常感謝在正確的方向點。提前致謝。

+0

您可以在這裏粘貼輸出,爲什麼不使用echo或=來顯示genreObj.parent = 中的變量內容; 您可以使用Ajax輕鬆創建對象 – Hamza 2013-02-09 01:31:36

+0

感謝您的快速回復。我不完全理解。你能給我一個genreObj.name =「<?echo $ row ['Type']?>」的例子嗎?應該看起來像請。 – seroth 2013-02-09 01:34:40

回答

1

我覺得

<? $row['Type'] ?> 

應該

<?= $row['Type'] ?> or 
<? echo $row['Type'] ?> 

也是一樣的下方不完全測試

<? $parent ?>; 
+0

我加了echo,仍然沒有結果。 Firebug說第一個返回值「bob」是未定義的。 genreObj.name =「<?echo $ row ['Type']?>」; – seroth 2013-02-09 01:53:24

+0

你確定所有的PHP變量都有值嗎? – Leeish 2013-02-09 02:00:42

+0

是的,我在HeidiSQL中運行了存儲過程並查看了所有結果。 – seroth 2013-02-09 02:01:45

3

在PHP中構建一個類似於您想要的JavaScript對象的關聯數組,然後使用json_encode()將其轉換爲JSON對象,然後可以輕鬆地將其傳遞給JavaScript。

你甚至可以做一些事情,如:

<?php 
// stuff 
$resultObj = json_encode($row); 
?> 

<script type="text/javascript"> 
var genreObj = <?= $resultObj ?>; 
</script> 

這不應該是你的問題的完美解決方案,但希望它會給你一些想法。

+0

是否可以構建一個PHP對象並將該對象傳遞給JavaScript對象? – seroth 2013-02-09 02:01:08

+0

默認情況下,您的對象類必須提供編碼方法。請參閱http://stackoverflow.com/questions/4697656/using-json-encode-on-objects-in-php-regardless-of-scope – Barmar 2013-02-09 02:12:46

+0

正在使用該方法的唯一方法? – seroth 2013-02-09 02:16:42

0

代碼,但其基本思想是將所有值寫入到一個數組,然後將該數組轉換爲json對象。從那裏分配json對象到jsonresults變量。現在,您可以通過JavaScript獲取所需的所有信息。

<?php 


$result = mysql_query("call sp_getGenre()"); 
if($result === FALSE){ 
    die(mysql_error()); 
} 
while($row = mysql_fetch_array($result)){ 
    $resultsarray = array("type"=> $row['type'], "level" => $row['Level'}, "previd" => $row['PrevID']); 
    $jsonifiedresults = json_encode($resultsarray); 
    ?> 
      <script type="text/javascript"> 
       jsonresult = <? echo $jsonifiedresults; ?>; 

       console.log(jsonresult.type); 
       var genreObj = new Object(); 
       genreObj.name = jsonresult.type; 
       genreObj.level = jsonresult.level; 
       genreObj.parent = jsonreult.prevID; 
       arrGenre.push(genreObj); 
      </script> 
<?php 
     } 
?> 
相關問題