js調數據庫二級聯動,js二級聯動下拉列表怎麼實現

本文目錄一覽:

二級聯動菜單,數據是從數據庫的一個表中查詢出來的,js顯示之後在顯示下一條的時候如何清空之前顯示的。

這裡有一個多級聯動下拉select菜單

還可以自己設置默認顯示值

裏面有代碼可以參考

jsp二級聯動js參數回填表單的問題

用AJAX

基於Servlet的AJAX

這是一個很常見的UI,當用戶在第一個選擇框里選擇ZHEJIANG時,第二個選擇框要出現ZHEJIANG的城市;當用戶在第一個選擇框里選擇JIANGSU時,第二個選擇框里要出現JIANGSU的城市。

首先,我們來看配置文件web.xml,在裏面配置一個servlet,跟往常一樣:

web-app version=”2.4″

xmlns=””

xmlns:xsi=””

xsi:schemaLocation=”

servlet

servlet-nameSelectCityServlet/servlet-name

servlet-classcom.stephen.servlet.SelectCityServlet/servlet-class

/servlet

servlet-mapping

servlet-nameSelectCityServlet/servlet-name

url-pattern/servlet/SelectCityServlet/url-pattern

/servlet-mapping

/web-app

然後,來看我們的JSP文件:

!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”

html

head

titleMyHtml.html/title

meta http-equiv=”keywords” content=”keyword1,keyword2,keyword3″

meta http-equiv=”description” content=”this is my page”

!–link rel=”stylesheet” type=”text/css” href=”./styles.css”–

/head

script type=”text/javascript”

function getResult(stateVal) {

var url = “servlet/SelectCityServlet?state=”+stateVal;

if (window.XMLHttpRequest) {

req = new XMLHttpRequest();

}else if (window.ActiveXObject) {

req = new ActiveXObject(“Microsoft.XMLHTTP”);

}

if(req){

req.open(“GET”,url, true);

req.onreadystatechange = complete;

req.send(null);

}

}

function complete(){

if (req.readyState == 4) {

if (req.status == 200) {

var city = req.responseXML.getElementsByTagName(“city”);

;

var str=new Array();

for(var i=0;icity.length;i++){

str[i]=city[i].firstChild.data;

}

(document.getElementById(“city”));

buildSelect(str,document.getElementById(“city”));

}

}

}

function buildSelect(str,sel) {

sel.options.length=0;

for(var i=0;istr.length;i++) {

sel.options[sel.options.length]=new Option(str[i],str[i])

}

}

/script

body

select name=”state” onChange=”getResult(this.value)”

option value=””Select/option

option value=”zj”ZEHJIANG/option

option value=”zs”JIANGSU/option

/select

select id=”city”

option value=””CITY/option

/select

/body

/html

第一眼看來,跟我們平常的JSP沒有兩樣。仔細一看,不同在JS裡頭。

我們首先來看第一個方法:getResult(stateVal),在這個方法里,首先是取得XmlHttpRequest;然後設置該請求的url:req.open(“GET”,url, true);接着設置請求返回值的接收方法:req.onreadystatechange = complete;該返回值的接收方法為——complete();最後是發送請求:req.send(null);

然後我們來看我們的返回值接收方法:complete(),這這個方法里,首先判斷是否正確返回,如果正確返回,用DOM對返回的XML文件進行解析。關於DOM的使用,這裡不再講述,請大家參閱相關文檔。得到city的值以後,再通過buildSelect(str,sel)方法賦值到相應的選擇框裡頭去。

最後我們來看看Servlet文件:

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* @author Administrator

*

* TODO To change the template for this generated type comment go to

* Window – Preferences – Java – Code Style – Code Templates

*/

public class SelectCityServlet extends HttpServlet {

public SelectCityServlet() {

super();

}

public void destroy() {

super.destroy();

}

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType(“text/xml”);

response.setHeader(“Cache-Control”, “no-cache”);

String state = request.getParameter(“state”);

StringBuffer sb=new StringBuffer(“state”);

if (“zj”.equals(state)){

sb.append(“cityhangzhou/citycityhuzhou/city”);

} else if(“zs”.equals(state)){

sb.append(“citynanjing/citycityyangzhou/citycitysuzhou/city”);

}

sb.append(“/state”);

PrintWriter out=response.getWriter();

out.write(sb.toString());

out.close();

}

}

這個類也十分簡單,首先是從request里取得state參數,然後根據state參數生成相應的XML文件,最後將XML文件輸出到PrintWriter對象里。

js 二級聯動, 參數不同 謝謝

我今天寫了一個二級聯動的例子,非常簡單,你試試看:

script type=text/javascript

var ss1=[‘名稱一’,’名稱二’,’名稱三’];

var ss2=[[‘規格1.1′,’規格1.2’],

[‘規格2.1′,’規格2.2′,’規格2.3’],

[‘規格3.1′,’規格3.2′,’規格3.3′,’規格3.4’]];

document.write(‘選擇名稱:select name=select1 onChange=”chg_select2(this.selectedIndex);”‘);

document.write(‘option’,ss1.join(‘option’));

document.write(‘/selectbr’);

document.write(‘選擇規格:select name=select2’);

document.write(‘option’,ss2[0].join(‘option’));

document.write(‘/selectbr’);

function chg_select2(n){

for (i=select2.options.length;i=0;i–) select2.options[i]=null;

for (i=0;iss2[n].length;i++) select2.options[select2.options.length]=new Option(ss2[n][i],ss2[n][i]);

}

/script

在線等高手指教怎麼在JSP頁面做JS二級聯動效果

簡單的說下原理吧

第一個下拉框變動,可以調用js的onchange時間,然後清空第二個下拉框,走ajax查詢第二個下拉框的所有數據,最後拼到頁面上。

js實現的二級聯動,修改時,從數據庫里讀的值給城市賦不了值

JS聯動AJAX異步操作的數據庫,這是為了顯示相應的子類別後,選擇最大的一類。

,直接讀取數據庫不等於顯示列表。

原創文章,作者:OWWT,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/133806.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
OWWT的頭像OWWT
上一篇 2024-10-04 00:01
下一篇 2024-10-04 00:01

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python字符轉列表指南

    Python是一個極為流行的腳本語言,在數據處理、數據分析、人工智能等領域廣泛應用。在很多場景下需要將字符串轉換為列表,以便於操作和處理,本篇文章將從多個方面對Python字符轉列…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python中不同類型的列表

    Python是一種功能強大的編程語言,其內置數據結構之一為列表。列表可以容納任意數量的元素,並且可以存儲不同類型的數據。 一、列表的基本操作 Python的列表類型支持許多操作,如…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • Python為什麼輸出空列表

    空列表是Python編程中常見的數據類型,在某些情況下,會出現輸出空列表的情況。下面我們就從多個方面為大家詳細闡述為什麼Python會輸出空列表。 一、賦值錯誤 在Python中,…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • Python定義兩個列表的多面探索

    Python是一種強大的編程語言,開放源代碼,易於學習和使用。通過Python語言,我們可以定義各種數據類型,如列表(list)。在Python中,列表(list)在處理數據方面起…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Python編程實現列表元素逆序存放

    本文將從以下幾個方面對Python編程實現列表元素逆序存放做詳細闡述: 一、實現思路 一般來說,使用Python將列表元素逆序存放可以通過以下幾個步驟實現: 1. 定義一個列表 2…

    編程 2025-04-29

發表回復

登錄後才能評論