我對web開發很陌生,有一個任務來開發一個Web應用程序,它將基本顯示用戶5-15在一個頁面上下拉列表,其中每個選擇將限制所有其他列表中的選擇。用戶應該能夠從任何一個列表開始(所以沒有設置選擇順序),並且當用戶已經在每個列表中選擇了某些內容或者所有參數被之前的選擇鎖定時,用戶必須按下GO按鈕並且一些計算將發生,提出數據庫選擇。基本上它是一個多參數產品選擇器應用程序。使用MySQL,PHP/JavaScript/Ajax/jQuery的鏈接下拉列表
列表之間的關係並不簡單,可能需要計算字段等,一個列表可能會影響其他幾個內容。後面的數據庫將是MYSQL,可能是一個大型表格,可能有30個字段和500-5000行。我將使用PHP,JavaScript和AJAX,除非你有充分的理由不這樣做。
我已經做了一些研究,發現三種方式來做到這一點:
所有數據發送到瀏覽器的JavaScript處理過濾等客戶端。
每次選擇後將參數發送回服務器,並在每次選擇後重新加載整個表單。可能是一個littebit Javascript和PHP中的大多數代碼。
使用AJAX動態更改所有列表內容,而無需重新加載整個表單。
因爲我很新的這我很難報時哪個方向走,有什麼陷阱還有等等
我有一些conserns:
A.緩慢的初始加載。最糟糕的是#1? B.動態響應緩慢。 #2最差?
C.複雜的編程。 #3的最差?
D.不同瀏覽器和平臺的兼容性問題。不知道哪種方法最有可能造成問題......如果我使用某種框架,會更好嗎?
E.我甚至可以嘗試使JavaScript至關重要的人至少有部分工作嗎? (比如在新頁面上選擇每個列表並且每次都按下GO按鈕)? (我想我可以告訴我的用戶他們必須有Javascript,所以沒有大問題....)也許#2在這裏最好?我認爲「自由選擇順序」的規範意味着我必須首先下載大部分的數據庫,所以也許我應該儘量避免這種選擇.....如果我保留它,我不如使用方法#1,或?
G.這將是最好做到儘可能在SQL selction /過濾通過建立自定義的SQL代碼,讓未來的擴展,所以,給出了一個很大的負向#1 ...
^h 。其他陷阱等?
我已經找到所有三種方法的教程等,但如果你可以指向這樣的好資源,我將不勝感激,尤其是我不基於我的代碼不是智能/良好/兼容的例子....
1: http://www.bobbyvandersluis.com/articles/unobtrusivedynamicselect.php http://javascript.about.com/library/bl3drop.htm http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_20523133.html
2: http://www.plus2net.com/php_tutorial/php_drop_down_list.php http://www.plus2net.com/php_tutorial/php_drop_down_list3.php
3: http://techinitiatives.blogspot.com/2007/01/dynamic-dropdown-list-using-ajax_29.html http://www.webmonkey.com/tutorial/Build_an_Ajax_Dropdown_Menu http://www.noboxmedia.com/massive-ajax-countryarea-drop-down-list/ http://freeajaxscripts.net/tutorials/Tutorials/ajax/view/Create_AJAX_Dynamic_Drop_Down_List_using_PHP_-_xajax.html
3 + jQuery的: http://remysharp.com/2007/01/20/auto-populating-select-boxes-using-jquery-ajax/
我們的問題是:任何人都可以在經歷所有這些方法幫助我一下,用上述方法1-3的評價,所以我可以選擇一個,右邊上手跟蹤?另外,我會通過學習/取消一個像jQuery + jSON這樣的框架來幫助嗎?
RGDS PM
感謝詹姆斯全面的答案! AJAX +框架是大多數人似乎建議的。猜猜我必須付出努力......另一個消極的原因是,它基本上排除了沒有使用JavaScript的人的回退解決方案,或者?對於框架來說,jQuery是這種應用程序的一個好的/最好的選擇,還是應該考慮YUI,MooTools等具有更多功能,但似乎有點難以使用/學習? – 2009-12-29 22:44:09