2012-09-17 78 views
1

可能重複:
How do I programatically set the value of a select box element using javascript?用JS更新PHP變量.innerHTML

我想,當選擇選項已更改爲更新表查詢的結果。以下測試代碼正常工作。但是,當我嘗試更新查詢時,它不起作用。我猜它與'回聲'有關,但我無法弄清楚。謝謝。

<script type="text/javascript"> 
    function ChangeText(value) 
    { 
    document.getElementById("p1").innerHTML=value; 
    } 
</script> 

<select onchange="ChangeText(value)"> 
    <option value="ONE">one</option> 
    <option value="TWO">two</option> 
    <option value="THREE">three</option> 
    <option value="FOUR">four</option> 
</select> 

<?php 
    $variable1 = '<p id="p1">place holder</p>'; 
    echo $variable1; 
?> 

什麼行不通:

document.getElementById("country").innerHTML=value; 

$country = '<p id="country">United States</p>' 

$result = mysql_query("SELECT * FROM statistics WHERE (Country='$country')"); 

的,其結果是一個空白表頁面加載時,我本來期望「美國」是缺省值。當我從下拉菜單中選擇一些東西時,它什麼也不做。

回答

1

在用戶看到頁面之前,PHP在服務器端執行。所以一旦用戶查看頁面,PHP就會執行完畢。

所以你不能「更新使用Javascript PHP變量,因爲上的JavaScript客戶端後,PHP已經完全執行完這恰好運行。

你應該看看AJAX

+0

我意識到這一點。但是我的測試代碼中發生了什麼,我可以使用select值更新$ variable1並在不重新加載頁面的情況下對其進行回顯?我希望我可以將其應用於我的查詢。 – topofsteel

+0

爲了讓Javascript以任何方式與PHP進行交互,它必須回撥給服務器。 PHP只存在於服務器上,而不存在於客戶端上。因此,AJAX將允許您獲取下拉列表的值,並將其發送回服務器上的PHP腳本,以便您可以在不重新加載頁面的情況下執行查詢。相信我...看看AJAX。這正是你需要的,它並不是非常複雜,我相信幾乎每一個Web開發人員都會在某個時候使用它,而且經常使用它。 – Travesty3

0

我認爲你對服務器端腳本與javascripting的工作原理有些混淆,PHP代碼不能在客戶端運行,PHP代碼由你的服務器執行,結果(所有的回顯+ HTML標記)被髮送到客戶端瀏覽器。如果您想要動態更新頁面,則必須使用表單並重新加載頁面,或使用AJAX。