2011-08-24 137 views
1

我有一種情況,我有3個多重選擇,比如說level1,level2和level3 now,level2取決於在level1中選擇的選項,同樣的level3取決於在level2中選擇的選項 我的問題是那麼最好是一次性獲得所有數據,也就是說,當頁面使用jquery加載和過濾這些數據(取決於用戶選擇的選項)還是應該向數據庫發出基於Ajax的請求以獲取下一個多選的數據每次用戶選擇一個選項。 哪種方法會更好?需要關於AJAX和jquery的建議

+2

取決於有多少選項。 –

+0

與紅-X一致。如果AJAX沒有多少選項,並且限制了非JS用戶的可訪問性 – WickyNilliams

+0

如果有很多選項,最好每次都發一個請求,否則只需要在開始時加載它們。這真的取決於,如果你不確定你應該嘗試兩種選擇,並檢查所花費的時間。 –

回答

0

我的答案是,它取決於所顯示的數據量。

如果level1,level2,level3中的數據量相對較小 - 您將從檢索所有數據中受益:您將通過減少一些請求將負載保存到服務器。這會讓你寫一些javascript,但是填充列表的速度會很快。另一方面,如果你的樹有很多數據(即,100級別1項目,每個項目有100個level2項目,每個項目有100個level3項目),最終會傳輸一百萬個項目(這個用例的開銷很大),這個案例的好解決方案是一個單獨的AJAX要求每個列表。

0

根據您的服務器速度,Ajax是一項非常快速的技術,因爲它是異步的(不需要回發),並且由於數據傳輸的方式。 我會說這取決於記錄的數量。你應該在這裏使用你的程序員標準。我的意思是,如果組合有很多選項,並且服務器速度很慢或者位於世界的另一邊,請在第一時間完成。無論哪種方式,您可以繼續在組合更改事件上調用ajax函數。

使用您的基準 -

0

任何時候你可以選擇到多個請求合併成一個則是最好的選擇。每個請求使用更多的資源,這可能是不必要的。當然,這完全取決於您正在處理的數據類型,因爲它可能無法一次性獲得所有可用的選項,或者它可能只是太多額外的數據加載。

1

我認爲你應該調用ajax來從每個選擇的數據庫中獲取數據。

0

在某種程度上,這取決於您所談論的數據量。

對於相當小的數量 - 幾KB的價值 - 你應該絕對一次下載它。重新組織客戶端的速度要比等待AJAX​​查詢拉下來要快,並且服務器上的點擊次數會更少 - 特別是如果用戶可能會點擊並在一行中發送多個AJAX請求。

如果你有一個主要的應用程序需要幾MB的數據進行單一下載,那麼較小的AJAX查詢可能是一條可行的路。

在這之間,這是一個判斷呼叫,但我總是傾向於單一下載和客戶端排序。任何最小化或消除由新的請求和響應導致的延遲都是很好的。

+0

正在提取的數據總共大約100KB,那麼你有什麼建議。現在我試圖使用jQuery在我的本地機器上似乎沒有任何問題,頁面也似乎加載正常。你有什麼建議 – pranky64

+0

妥協怎麼樣?加載除數據外的頁面,然後在單個AJAX查詢中獲取整個100KB的數據塊。這樣你就可以最小化服務器請求,但用戶不會等待頁面加載。隱藏第一個滾動框直到AJAX查詢完成。 – Blazemonger

+0

是的,這是一個好主意....我想我可以使用..... thnks! :) – pranky64

0

我認爲您應該對數據庫執行基於ajax的請求,因爲如有必要,數據的調試和操作將更加容易。

0

我認爲你必須使用Jquery
並且您應該在多選中每次選擇後加載數據。 性能明智,它不是一個好的方法來加載頁面加載所有數據..