2012-08-22 30 views
0

如果你讀my previous question,你可能知道,PHP和JavaScript DOM之間共享數據的方式並不在此作業許可:如何在DOM和PHP之間共享數據?

+-----------+ +------------+ +----------| +----------+ +-----------+  
|javascript +---+Ajax Request+--+handle.php+-+result.xml+->+DOM parser |  
+-----------+ +------------+ +----------+ +----------+ +-----------+  

所以我想獲得的所有信息在MySQL在所有一次作爲一個數組,並嘗試通過javascript訪問這個數組而不需要Ajax請求。

,我能想出的唯一辦法是

+---------+  +-----------------------------+ +--------------------------------------+ 
    |Php array|  | write in Dom make it hidden | | Parse the hidden element by DOM API | 
    +---------+  +-----------------------------+ +--------------------------------------+ 

但這似乎並不優雅可言,是否有更好的方法來做到這一點?

+1

爲什麼最初不將mysql數據作爲json對象傳遞給DOM? –

+0

@PeterKirby這就是我正在尋找的答案,但我對此很不理解,我不知道該怎麼做?我如何使用PHP來生成JSON並在JavaScript中可用 – mko

+0

我們爲什麼要做你的功課?我希望這不是大學......花費數千美元上課,然後不做這項工作來學習這些材料將是一個巨大的浪費(當學習編程時,弄清楚如何做到這一點就是你如何學習!)。這也是每個在簡歷中看到一所大學的人所犯下的欺詐行爲。如果這是作業,你是一個壞人。 –

回答

2

查詢數據庫,並將結果作爲JavaScript打印在腳本標記中。現在,所有數據均位於本地JavaScript變量中,您可以隨意使用。

<script type="text/javascript"> 

    products = []; 

    <?php 
    mysql_connect('host', 'username', 'password'); 
    mysql_select_db('dbname');  

    $sql = "SELECT productName from products WHERE productTYPE = 1"; 
    $result = mysql_query($sql); 
    while ($row = mysql_fetch_array($result)) { 

    echo "products.push('" . addslashes($row['productName']) . "'); \n"; 

    } 

    ?> 

    //do something with all the stuff in the products array 
    alert("There are " + products.length + " products in the array."); 

</script> 
+0

太棒了!我怎麼可能不會想到這個解決方案,但在這種情況下,我不能使用外部JavaScript,但只有內聯JavaScript讓PHP執行工作 – mko

+0

這裏沒有外部的JavaScript。這是同樣的文件,你會寫你所有的其他JavaScript。你不能從PHP中獲取數據,而不打印它在HTTP響應(this),或發出另一個請求(AJAX)。如果您的老師希望您根據第一個列表填充第二個列表,而不使用AJAX,則這是他/她正在尋找的內容。 –

+0

是的,我正在嘗試實施它。順便說一句我可以利用JSON的用法,我的意思是讓PHP生成JSON和JavaScript把它當作一個對象 – mko