2014-03-03 30 views
0

沒有Jquery,只是普通的XMLHttpRequest。如何使用Ajax創建動態選擇表單?

所以這個流程非常直觀。用戶有一個配置文件,可以隨時更改他對該表單的選擇。這是一個多選。數據存儲在服務器上的數據庫當然。

我想同步數據庫信息的變化與用戶在旅途中選擇的內容。我環顧四周,似乎幾乎每個人都遇到了這個問題,因爲我不能說我經過了很多次嘗試都弄清楚了,所以我很樂意提供幫助。看來,甚至有什麼事情需要處理都會遇到一些問題。

我失敗的嘗試是這樣的:

function checkSelect(selection) 
{ 
params = "selected=" + selection.selected 
request = new ajaxRequest() 
request.open("POST", "checkdbOpts.php", true) 
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded") 
request.setRequestHeader("Content-length", params.length) 
request.setRequestHeader("Connection", "close") 

request.onreadystatechange = function() 
{ 
    if (this.readyState == 4) 
     if (this.status == 200) 
      if (this.responseText != null) 
       O('cat').innerHTML = this.responseText 
} 
request.send(params) 
} 

ajaxRequest只是一個包裝了XMLHttpRequest對象的跨瀏覽器實例化的功能。

<select id="cat" name="select[]" multiple="multiple" onClick > 
<option value="Opt1" onClick="checkSelect(this.selectedIndex)"> Value1</option> 
<option value="Opt2" onClick="checkSelect(this.selectedIndex)"> Value2</option> 
<option value="Opt3" onClick="checkSelect(this.selectedIndex)"> Value3</option> 
<option value="Opt4" onClick="checkSelect(this.selectedIndex)"> Value4</option></select> 

.php文件根據數據庫信息輸出一個選擇標記,並啓用選定的屬性。

任何想法如何得到這個權利?

回答

1

我會使用:

<select id='cat' onchange='checkSelect(this)'> 
    <option value='opt1'>Value1</option> 
    <option value='opt2'>Value2</option> 
    ... 
</select> 

和功能:

function checkSelect(field) 
    { 
    params = "selected=" + field.options[field.selectedIndex].value 
    ... 
+0

,以確保公正,怎麼會由PHP的樣子輸出呼應? – user3046061

+0

「selected = opt1」如果您選擇第一個選項。你是這個意思嗎 ? – T4NK3R

+0

是的,我不確定它是一對還是一個完整的html標籤......我見過一些令人困惑的例子 – user3046061