2010-06-09 86 views
2

我一直在尋找解決方法很長一段時間,但認爲是時候我解決它了。 如果我有一個頁面有一個下拉菜單,是否有我可以選擇一個值,隨後將進一步下載其他值。關於JavaScript或AJAX的一個簡單問題

這可以在沒有頁面重新加載的情況下完成嗎?

我會給你一個例子。 假設我正在爲管理控制檯製作一些工具,但首先他們需要選擇一名成員才能使用。 他們會選擇成員,然後在下面,根據第一個菜單中選擇的內容填充關於該成員的字段。

正如我已經問過,這可以做到沒有頁面重新加載?

感謝您的閱讀。

+0

看看http://www.cars.com/是怎麼做的 – 2010-06-09 10:17:15

回答

1

回答是可以做到的。

首先,您需要一個事件,在這種情況下,您需要對selectBox的事件onChange採取行動。所以當一個項目改變時,你運行一個函數。

現在你有2個選擇。您可以使用AJAX或NOT來做到這一點,它確實取決於應用程序的複雜性/安全性。

在我指的是

  1. 用戶以下:其中使用的應用程序
  2. 隱藏客戶端數據:網頁加載過程中的數據發送到客戶端,但對所有用戶不可見,但使用查看源代碼或者下載JS文件,數據不安全。

方法1 - NO AJAX

基礎知識:你把所有可能的顯示選項下開始時首先加載的頁面,而是選擇框的onchange事件中僅顯示與用戶相關的章節。

在以下情況下推薦:如果檢測到隱藏的客戶端數據(或者不會被檢測到,或者您只是相信您的受衆以預定方式使用該應用),則不提供安全限制。最後,當您的總視圖排列較少時。

方法2 - AJAX

基礎知識:你發下來最初只在頁面骨架,當用戶改變選擇框的值,然後你做一個AJAX請求到服務器 - 抓住新視角那些與該用戶相關的信息,將其發送回一個腳本,該腳本將該用戶數據注入到DOM中。

建議您:公共場所或安全考慮的場所。如果您有大量視圖排列或想要比場景1更多的個性化設置。

正如您所看到的,兩種方法都不需要重新發布 - 方法1在前期提供所有內容,方法2在需要時使用AJAX填充數據。根據您的要求,這兩種方法都是有效的。

+0

在第一個選擇框改變之後,會有大約10個更多的下拉框要考慮,AJAX是更好的方法呢? – sark9012 2010-06-09 10:32:26

+0

是的,我會選擇Ajax。另一個考慮因素是延遲,如果你不使用它,你需要留意在使用Ajax時讓你的受衆意識到加載的意識,否則人們可能會發現這些想法不起作用。 – 2010-06-09 10:34:27

+0

並且不要使用Microsoft Ajax框架 - 它們是邪惡的。 – 2010-06-09 10:36:25

3

是的,它可以在沒有AJAX的情況下完成。當呈現頁面時通將被下拉列表中使用的所有集合的JSON對象到HTML:

var collection = [{ id: 1, name: 'John' }, { id: 2, name: 'Smith' }]; 
... 

然後註冊了第一個下拉的變化情況,並根據所選擇的價值去從其他集合中獲取數據。當然,如果你有很多數據,這可能不太實際,因爲你的頁面會變得非常大,在這種情況下,AJAX會更合適。

0

。阿賈克斯主要用於IE瀏覽器(無需重新加載頁面)

你必須使用下面的步驟來實現

  1. 創建一個鏈接,並調用JavaScript功能上它onchange功能
  2. 在JavaScript函數你必須調用Ajax請求。
  3. 更新您的ajax響應中的div。