簡體   English   中英

JSP:下拉列表2取決於下拉列表1

[英]JSP: drop down list 2 depends on drop down list 1

我在處理兩個鏈接的下拉列表時遇到困難,下拉列表1將從數據庫中獲取值,並基於用戶的選擇,它將從下拉列表2中獲取相關記錄。

我嘗試使用該代碼在jsp中執行此操作,但此操作不起作用,許多人建議使用javascript。 實際上,我對abot JS的了解不多,所以請您幫我一下

<select size="1" name="shop_category"><option value="NONE">  
<%  
             try  
             {  
                            ResultSet rs=null;  
                            Statement st1=null;  
                            String query = "select Category_name, category_id from shop_category_lkup";  
                            st1 = conn1.createStatement();  
                            rs = st1.executeQuery(query);  
                            while(rs.next())                  
            {  
       String sz_Selected="";  
             if (rs.getString("category_id").equals(shop_category))  
             {  
               sz_Selected = "selected";  
             }  
%>  
            <option value="<%=rs.getString("category_id")%>" <%=sz_Selected%>>  
    <%=rs.getString("category_name")%></option>  
<%  
                            }  
            }  
            catch (Exception e) {  
  e.printStackTrace();  
}  
%>  
</select>  

<select size="1" name="rent_category"><option value="NONE">  
<%  
             try  
             {  
                            ResultSet rs=null;  
                            Statement st1=null;  
                            String query = "select r.Category_name, r.category_id from rent_category_lkup r, shop_categpry_lkup s where r.category_id=s.category_id";  
                            st1 = conn1.createStatement();  
                            rs = st1.executeQuery(query);  
                            while(rs.next())                  
            {  
       String sz_Selected="";  
             if (rs.getString("category_id").equals(rent_category))  
             {  
               sz_Selected = "selected";  
             }  
%>  
            <option value="<%=rs.getString("category_id")%>" <%=sz_Selected%>>  
    <%=rs.getString("category_name")%></option>  
<%  
                            }  
            }  
            catch (Exception e) {  
  e.printStackTrace();  
}  
%>  
</select>

假設腳本中存在的Java代碼在客戶端執行,這是一個根本性的錯誤!

看一下JSP生命周期 之后,您將處於一個更好的位置,以了解為什么您的代碼不起作用。
之后,您應該嘗試使用AJAX研究一些Cascading Dropdown示例

如果所有這些都無濟於事-請重新發布,引導您的過程會容易得多。

我不願意發布擴展的答案,因為@anirvan已經用兩個詞完美地總結了這一點,我無法超越:您犯了一個根本性的錯誤

直截了當:Java / JSP在Web服務器上運行,生成一堆HTML / CSS / JS並通過網絡將其從Websserver發送到Webbrowser。 網絡瀏覽器(例如MSIE,Firefox等)檢索並理解HTML / CSS / JS並開始顯示/應用/運行它。 如果Java / JSP已正確完成其任務,則在Web瀏覽器中右鍵單擊> 查看源代碼時,您不應看到其任何一行。 使Web瀏覽器(JavaScript)中的代碼和Web服務器(Java / JSP)中的代碼相互通信的唯一方法是讓JavaScript發送HTTP請求,然后Java / JSP對此做出響應。

使用JavaScript發送HTTP請求可以通過以下幾種方式完成:

  1. 提交表單: document.getElementById('formId').submit()
  2. 更改窗口位置: window.location = 'http://www.google.com'; : window.location = 'http://www.google.com';
  3. 觸發一個Ajaxical請求: new XMLHttpRequest()等等。

這是一堆“必讀”鏈接,以了解彼此之間如何相互配合以及如何使用彼此:

嗯,這個答案畢竟比我想的要擴展的多了……總之,希望它能對您有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM