亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery+jsp下拉框聯動獲取本地數據的方法(附源碼)

2019-11-20 11:05:07
字體:
來源:轉載
供稿:網友

本文實例講述了jQuery+jsp下拉框聯動獲取本地數據的方法。分享給大家供大家參考,具體如下:

JQuery下拉框聯動很好的體現了Ajax的按需取數據的要求,減小數據的交互量。(點擊此處下載源代碼)

下面的實例使用Json將服務器端的類或者對象轉換為JSON格式,主要運用了6個jar包

commons-beanutils-1.7.0.jar
commons-collections-3.2.jar
commons-lang-2.3.jar
commons-logging-1.0.4.jar
ezmorph-1.0.3.jar
json-lib-2.1.jar

下面貼上實驗圖,并詳細講解一下主要代碼

顯示頁面index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <title>JQuery實例-級聯下拉框效果</title> <meta http-equiv= "Content-Type" content="text/html";charset=UTF-8"> <link type="text/css" rel="stylesheet" href="css/chainselect.css" /> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/chainselect.js"></script> </head> <body> <div class="loading">  <p><img src="images/data-loading.gif" alt="數據裝載中" /></p>  <p>數據裝載中......</p> </div> <div class="car">  <span class="carname">  汽車廠商:  <select>   <option value="" selected="selected">請選擇汽車廠商</option>   <option value="BMW">寶馬</option>   <option value="Audi">奧迪</option>   <option value="VW">大眾</option>  </select>  <img src="images/pfeil.gif" alt="有數據" />  </span>  <span class="cartype">  汽車類型:  <select></select>  <img src="images/pfeil.gif" alt="有數據" />  </span>  <span class="wheeltype">  車輪類型:  <select></select>  </span> </div> <div class="carimage">  <p><img src="images/img-loading.gif" alt="圖片裝載中" class="carloading" /></p>  <p><img src="images/BMW_316ti_rha.jpg" alt="汽車圖片" class="carimg"/></p> </div> </body></html>

修飾文件chainselect.css

.loading { width: 400px; /*margin-left: auto;*/ /*margin-right: auto;*/ margin: 0 auto; visibility: hidden; }.loading p { text-align: center;}p { margin: 0;}.car { /*width: 500px;*/ /*margin: 0 auto;*/ text-align: center;}.carimage { text-align: center;}.cartype, .wheeltype, .carloading, .carimg, .car img { display: none;}

在這里,要注意屬性 display: none; 與 visibility: hidden;的區別

display: none;

使用該屬性后,HTML元素(對象)的寬度、高度等各種屬性值都將“丟失”;

visibility: hidden;

使用該屬性后,HTML元素(對象)僅僅是在視覺上看不見(完全透明),而它所占據的空間位置仍然存在,也即是說它仍具有高度、寬度等屬性值。

JQUERY處理文件chainselect.js

$(document).ready(function(){ //找到三個下拉框 var carnameSelect = $(".carname").children("select"); var cartypeSelect = $(".cartype").children("select"); var wheeltypeSelect = $(".wheeltype").children("select"); var carimg = $(".carimg"); //給三個下拉框注冊事件 carnameSelect.change(function(){ //1.需要獲得當前下拉框的值 var carnameValue = $(this).val(); //1.1只要第一個下拉框內容有變化,第三個下拉框都要先隱藏起來 wheeltypeSelect.parent().hide(); //1.2將汽車圖片隱藏起來 carimg.hide().attr("src",""); //2.如果值不為空,則將下拉框的值傳送給服務器 if (carnameValue != "") {  if (!carnameSelect.data(carnameValue)) {  //對應服務器端程序 CarJsonServlet的屬性,并將該Servlet中的數據轉換為JSON格式  $.post("CarJsonServlet",{keyword: carnameValue, type: "top"},function(data){   //2.1接收服務器返回的汽車類型 ,data為數組格式   if (data.length != 0) {   //2.2解析汽車類型的數據,填充到汽車類型的下拉框中   cartypeSelect.html("");   $("<option value=''>請選擇汽車類型</option>").appendTo(cartypeSelect);   for (var i = 0; i < data.length; i++) {    $("<option value='" + data[i] + "'>" + data[i] + "</option>").appendTo(cartypeSelect);   }   //2.2.1汽車類型的下拉框顯示出   cartypeSelect.parent().show();   //2.2.2第一個下拉框后面的指示圖片顯示出來   carnameSelect.next().show();   } else {   //2.3沒有任何汽車類型的數據   cartypeSelect.parent().hide();   carnameSelect.next().hide();   }   carnameSelect.data(carnameValue, data);  }, "json");  } } else {  //3.如果值為空,那么第二個下拉框所在span要隱藏起來,第一個下拉框后面的指示圖片也要隱藏  cartypeSelect.parent().hide();  carnameSelect.next().hide(); } }); cartypeSelect.change(function(){ //1.需要獲得當前下拉框的值 var cartypeValue = $(this).val(); //1.1將汽車圖片隱藏起來 carimg.hide().attr("src",""); //2.如果值不為空,則將下拉框的值傳送給服務器 if (cartypeValue != "") {  if (!cartypeSelect.data(cartypeValue)) {  $.post("CarJsonServlet",{keyword: cartypeValue, type: "sub"},function(data){   //2.1接收服務器返回的汽車類型   if (data.length != 0) {   //2.2解析汽車類型的數據,填充到車輪類型的下拉框中   wheeltypeSelect.html("");   $("<option value=''>請選擇車輪類型</option>").appendTo(wheeltypeSelect);   for (var i = 0; i < data.length; i++) {    $("<option value='" + data[i] + "'>" + data[i] + "</option>").appendTo(wheeltypeSelect);   }   //2.2.1車輪類型的下拉框顯示出   wheeltypeSelect.parent().show();   //2.2.2第二個下拉框后面的指示圖片顯示出來   cartypeSelect.next().show();   } else {   //2.3沒有任何汽車類型的數據    wheeltypeSelect.parent().hide();   cartypeSelect.next().hide();   }   cartypeSelect.data(cartypeValue, data);  }, "json");  }  } else {  //3.如果值為空,那么第三個下拉框所在span要隱藏起來,第二個下拉框后面的指示圖片也要隱藏  wheeltypeSelect.parent().hide();  cartypeSelect.next().hide(); } }); wheeltypeSelect.change(function(){ //1.獲取車輪類型 var wheeltypeValue = $(this).val(); //2.根據汽車廠商名稱,汽車型號和車輪類型得到汽車圖片的文件名 var carnameValue = carnameSelect.val(); var cartypeValue = cartypeSelect.val(); var carimgname = carnameValue + "_" + cartypeValue + "_" + wheeltypeValue + ".jpg"; //3.顯示出loading的圖片 carimg.hide(); $(".carloading").show(); //4.通過Javascript中的Image對象預裝載圖片 var cacheimg = new Image(); $(cacheimg).attr("src","images/" + carimgname).load(function(){  //隱藏loading圖片  $(".carloading").hide();  //顯示汽車圖片  carimg.attr("src","images/" + carimgname).show(); }); //3.修改汽車圖片節點的src的值,讓汽車圖片顯示出來 //carimg.attr("src","images/" + carimgname).show(); //4.使汽車圖片的節點顯示出來 }); //給數據裝載中的節點定義ajax事件,實現動畫提示效果 $(".loading").ajaxStart(function(){ $(this).css("visibility","visible"); $(this).animate({  opacity: 1 },0); }).ajaxStop(function(){ $(this).animate({  opacity: 0 },500); });})

問題???:$("<option value=''>請選擇汽車類型</option>").appendTo(cartypeSelect);這里出現中文亂碼怎么解決???

服務器端CarJsonServlet

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;import net.sf.json.JSONArray;public class CarJsonServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException { //解決中文亂碼 response.setHeader("Cache-Control", "no-cache"); response.setContentType("text/json;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); //得到type,keyword的值 String type = request.getParameter("type"); String keyword = request.getParameter("keyword"); JSONArray jsonArrayResult = new JSONArray(); if ("top".equals(type)) {  if ("BMW".equals(keyword)) {  jsonArrayResult.add("316ti");  jsonArrayResult.add("6ercupe");  } else if ("Audi".equals(keyword)) {  jsonArrayResult.add("tt");  } else if ("VW".equals(keyword)) {  jsonArrayResult.add("Golf4");  } } else if ("sub".equals(type)) {  if ("tt".equals(keyword)) {  jsonArrayResult.add("rha");  jsonArrayResult.add("rhb");  jsonArrayResult.add("rhc");  } else if ("316ti".equals(keyword)) {  jsonArrayResult.add("rha");  jsonArrayResult.add("rhb");  } else if ("6ercupe".equals(keyword)) {  jsonArrayResult.add("rha");  jsonArrayResult.add("rhb");  jsonArrayResult.add("rhc");  } else if ("Golf4".equals(keyword)) {  jsonArrayResult.add("rha");  jsonArrayResult.add("rhb");  } } PrintWriter out = response.getWriter(); out.write(jsonArrayResult.toString()); out.flush(); out.close(); }}

配置文件web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0"  xmlns="http://java.sun.com/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <servlet>  <servlet-name>CarJsonServlet</servlet-name>  <servlet-class>CarJsonServlet</servlet-class>  </servlet>  <servlet-mapping>  <servlet-name>CarJsonServlet</servlet-name>  <url-pattern>/CarJsonServlet</url-pattern>  </servlet-mapping>  <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>

本節學到的JQuery及其他開發知識:

1.img標簽的alt屬性要寫上,在圖片尚未裝載進來或圖片不存在時,這個屬性的文字信息會顯示出來
2.select表示下拉框,下拉框的每一項都是一個option,option開始結尾標簽中的內容會顯示在頁面上,value屬性的值則是用于在JQuery中用val方法獲取并發送給服務器的。定義了selected的屬性值為selected時,表示當前option被選中
3.div元素居中顯示的方法:給div設定寬度,然后margin-left和margin-right的值都為auto。簡寫方法是margin: 0 auto;
4.html的p標簽表示一個段落的內容,其中的內容會獨占一行或多行,后面的內容會另起一行顯示
5.為了讓p中文字和圖片居中,可以使用text-align屬性,屬性值為center。p標簽默認有margin-top和margin-bottom的值,需要的話可以通過css清除
6.visibility的屬性值為hidden時,元素隱藏,但是和display為none不同的是,在頁面中仍然占據一定空間,只是不顯示
7.多個選擇器如果有相同的屬性值,可以放在一起定義,選擇器之間用逗號分割
8.change方法對應標準Javascript中的onchange事件,可以處理下拉框內容變化的事件
9.parent方法可以獲得一個節點的父節點
10.next方法可以獲得一個節點的下一個兄弟節點,對應的previous方法可以獲得一個節點的上一個兄弟節點
11.$.post方法可以和服務器端發起post的異步請求。第一個參數是請求的服務器端地址,第二個參數是發送給服務器端的數據,參數是Javascript的對象,采用名值對的方式表示,第三個參數是回調方法,第四個參數指示服務器端返回的數據類型,JQuery會根據這個參數幫我們進行轉換。get方法只有第二個參數不同,其他幾個參數用法相同
12.Javascript中的簡單對象定義方式是{key1: value1, key2: value2}
13.JSON的數據格式其實就是Javascript中的一個對象或數據定義的文本格式內容,比如{key1: value1, key2: [1,2,3]}或[1,2,{key2:
value2}]
14.可以直接$(“<option></option>”)的方法來建立下拉框中的選項,然后用appendTo這樣的方法加入到下拉框中
15.attr方法可以設置或獲取某一個節點的屬性值
16.ajaxStart在每一個JQuery發出的ajax請求開始前執行,ajaxStop在JQuery隊列中所有的ajax請求結束后執行,ajaxComplete在每一個JQuery發出的ajax請求結束后執行
17.fadeOut和fadeIn可以實現淡出淡入的效果,參數內容和slideUp,slideDown方法類似。
18.animate方法可以實現任意的動畫效果,可以控制某個css屬性在某個時間內進行變化,從而達到動畫的效果
19.opacity可以改變元素的透明度,IE中使用過濾器實現,100表示完全顯示,0表示完全透明,非IE瀏覽器使用opacity屬性,1表示完全顯示,0表示透明。JQuery在animate方法中屏蔽了瀏覽器差異,直接使用opacity就可以達到淡入淡出的效果。
20.data方法可以用于緩存數據。緩存可以提高系統的運行效率,降低服務器端的負荷
21.可以使用Javascript中的Image對象來預裝載圖片,這樣可以知道圖片何時裝載完成,以便給出一些圖片裝載的提示信息。
22.load方法可以對應Javascript中的onload事件,本例中用于捕捉圖片加載完成的事件

希望本文所述對大家jQuery程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品久久久久秋霞蜜臀| 亚洲а∨天堂久久精品9966| 国产精品一区二区三区久久| 国产精品电影久久久久电影网| 国产午夜精品一区二区三区| 日韩高清电影免费观看完整| 一区二区三区精品99久久| 精品爽片免费看久久| 中文字幕亚洲综合| 亚洲一区二区三区视频| 国产欧美精品一区二区三区介绍| 成人午夜两性视频| 黑丝美女久久久| 亚洲精选中文字幕| 成人午夜小视频| 久久久国产影院| 高潮白浆女日韩av免费看| 2019最新中文字幕| 国产亚洲精品久久| 日韩a**站在线观看| 精品香蕉一区二区三区| 亚洲图片欧美午夜| 国产区精品视频| 欧美一级成年大片在线观看| 日韩精品免费在线观看| 欧美日韩一二三四五区| 久久97久久97精品免视看| 欧美日韩一区二区三区| 久久精品视频导航| 日韩欧美中文在线| 一本色道久久88精品综合| 久久影院资源网| 国产激情久久久久| 日本高清+成人网在线观看| 亚洲一级免费视频| 亚洲一区二区三区成人在线视频精品| 久久久久久美女| 2018国产精品视频| 7777精品视频| 岛国av一区二区在线在线观看| 69久久夜色精品国产7777| 欧美日韩中文字幕在线视频| 午夜剧场成人观在线视频免费观看| 国产久一一精品| 久久伊人精品视频| 精品国产91久久久久久| 亚洲精品动漫久久久久| 久久久久久久成人| 日本亚洲欧美成人| 国产成人久久久精品一区| 日韩精品视频观看| 久久人体大胆视频| 亚洲视频在线观看网站| 欧美日韩国产一中文字不卡| 亚洲最大在线视频| 91精品国产色综合久久不卡98口| 久久久久久久国产精品| 久久久人成影片一区二区三区观看| 韩国精品久久久999| 丝袜情趣国产精品| 岛国精品视频在线播放| 伊人久久大香线蕉av一区二区| 国产99久久精品一区二区永久免费| 久久理论片午夜琪琪电影网| www高清在线视频日韩欧美| 久久国内精品一国内精品| 日韩中文理论片| 久久久影视精品| 国产成人精品亚洲精品| 欧美成人精品h版在线观看| 久久久久久国产精品美女| 一区二区三区美女xx视频| 国产成人综合一区二区三区| 久久天天躁狠狠躁夜夜av| 国产精品露脸av在线| 91精品成人久久| 在线播放精品一区二区三区| 久久激情视频久久| 国产丝袜一区二区三区| 成人乱人伦精品视频在线观看| 欧美精品www| 久久久亚洲精品视频| 日韩在线免费视频观看| 在线亚洲午夜片av大片| 亚洲福利精品在线| 日韩电影大全免费观看2023年上| 国产精品xxxxx| 欧美日韩亚洲系列| 日韩一区二区三区在线播放| 欧美日韩综合视频网址| 91精品国产成人www| 日韩免费观看网站| 91社影院在线观看| 亚洲女性裸体视频| 亚洲激情在线观看视频免费| 91av免费观看91av精品在线| 国模精品视频一区二区三区| 亚洲国产一区自拍| 欧美日韩国产中文精品字幕自在自线| 色综合天天狠天天透天天伊人| 色综合伊人色综合网| 国产精品美女久久久久久免费| 992tv在线成人免费观看| 欧美日韩国产麻豆| 成人国产精品久久久久久亚洲| 国产精品日韩欧美| 日本一区二区在线免费播放| 亚洲aⅴ男人的天堂在线观看| 欧美日韩成人在线播放| 91沈先生在线观看| 国产精品自拍偷拍| 亚洲精品资源美女情侣酒店| 91国内揄拍国内精品对白| 国产精品入口免费视| 欧美乱大交xxxxx另类电影| 亚洲性生活视频在线观看| 国产日韩在线精品av| 欧美精品日韩www.p站| 日本精品免费一区二区三区| 欧美综合激情网| 精品成人国产在线观看男人呻吟| 久久国产精品99国产精| 久久色免费在线视频| 亚洲欧美资源在线| 精品国产依人香蕉在线精品| 亚洲开心激情网| 一区国产精品视频| 国产精品久久久久久久午夜| 91av视频在线观看| 欧美一级黄色网| 性色av香蕉一区二区| 国产精品久久久久久久久免费| 国产精品第七十二页| 久久伊人精品视频| 日韩少妇与小伙激情| 日韩av中文在线| 国产亚洲欧美另类中文| 国产自摸综合网| 欧美xxxx18性欧美| 成人午夜一级二级三级| 亚洲午夜av电影| 国内免费精品永久在线视频| 欧美极品xxxx| 亚洲精品色婷婷福利天堂| 国产精品大片wwwwww| 91精品视频在线免费观看| 这里只有视频精品| 中文字幕日韩av电影| 精品久久久精品| 久久久电影免费观看完整版| 国内精品小视频在线观看| 中文字幕免费国产精品| 97**国产露脸精品国产| 久久久久久久97| 国产精品无码专区在线观看| 欧美午夜久久久| 日本精品一区二区三区在线| 久久精品精品电影网| 欧美极品第一页| 久久久久免费视频| 九九综合九九综合| 国产日产欧美精品| 成人疯狂猛交xxx| 国产精品爱啪在线线免费观看|