国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

JavaWeb開發(fā)之使用jQuery與Ajax實現(xiàn)動態(tài)聯(lián)級菜單效果

2019-11-26 13:44:38
字體:
供稿:網(wǎng)友

寫在前面,在筆者完成這個demo的時候,筆者發(fā)現(xiàn)現(xiàn)在大家已經(jīng)不用Ajax來完成聯(lián)級菜單了,實際上筆者這個demo也并不是為了完成這個,筆者主要的學(xué)習(xí)方向是JavaWeb后臺的業(yè)務(wù)邏輯開發(fā)。但是做后臺呢還是需要對前端有所了解,尤其是像Ajax這種異步提交數(shù)據(jù)的技術(shù)需要了解并掌握。所以這里筆者這里用了一個聯(lián)級菜單來練習(xí)Ajax異步提交,當(dāng)然后續(xù)還會寫幾個異步提交表單的demo。

筆者的后臺是用的spring+SpringMVC的框架,這里不對這部分進(jìn)行解釋,重點在jQuery和Ajax。

第一,下載jquery.js這個資源

Jquery官網(wǎng)鏈接

第二,將下載好的jquery.js導(dǎo)入項目中

在javaweb項目中,直接放在 WebContent 中即可(也可以建立自己的文件夾,但不要放在WEB-INF文件中)

第三,開始編寫代碼

新建一個JSP文件

代碼如下

<%@page import="java.util.Map"%><%@page import="java.util.List"%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Ajax Test</title></head><body><!--這是從后臺傳入前端的request中獲取數(shù)據(jù)的代碼,與主題Ajax可以脫離,不必過多關(guān)注--><%List<Map<String,Object>> listMap = (List<Map<String,Object>>)request.getAttribute("list"); %><select id="class" onchange="getStudent(this.value)"><option value="-1">請選擇班級</option><%for(int i = 0; i < listMap.size(); i++){Map<String,Object> map = listMap.get(i);%><option><%=map.get("class").toString() %></option><%} %><!--先選擇班級,然后第二個菜單選項會根據(jù)選擇的內(nèi)容使用Ajax異步同步后臺數(shù)據(jù)庫的數(shù)據(jù),從而設(shè)定第二個菜單的選項--></select><!--第二個菜單,根據(jù)選擇的班級確定姓名--><select id="name"><option>請先選擇班級</option></select></body><!--導(dǎo)入jquery資源--><script type="text/javascript" src="jquery/jquery-3.1.1.min.js"></script><!--使用jquery中的ajax對界面進(jìn)行異步同步操作--><script>//jquery標(biāo)準(zhǔn)語法$(document).ready(function(){//監(jiān)聽id為class的select控件的改變動作,當(dāng)這個控件所選中的控件改變時會出發(fā)這個function$("#class").change(function(){//調(diào)用jquery中的ajax$.ajax({//設(shè)定提交方式,主要是"GET"和"POST"type:"POST",//設(shè)定提交的url,這里只能選擇本地的,如果需要調(diào)用其他域的資源,請google解決跨域問題url:"ajax.html?className="+$("#class").val(),//設(shè)定后臺返回的格式,一般都是直接使用json,這一句不能少,否則當(dāng)后臺返回數(shù)據(jù)時,不會調(diào)用success方法dataType:"json",//當(dāng)后臺成功返回數(shù)據(jù)時調(diào)用該方法,data參數(shù)表示被jquery中的ajax格式化的json數(shù)據(jù)(實際上在非jquery的ajax中需要我們手動格式化,純JS的方法我也寫在了注釋里面。jquery中格式j(luò)son數(shù)據(jù)的方法是parse)success:function(data){//清空id為name的select控件$("#name").empty();//給id為那么的select控件添加一個選項$("#name").append("<option>請選擇姓名</option>");//循環(huán)遍歷整個data(JSON數(shù)據(jù)),并給id為name的select控件添加option選項$.each(data,function(i,n){$("#name").append("<option>"+data[i].name+"</option>");});},//當(dāng)返回數(shù)據(jù)不成功時的操作error:function(jqXHR,XMLResponse){alert(arguments[1]);alert(XMLResponse.responseText);alert("發(fā)生錯誤:"+jqXHR.status);}});});});</script><!--不用Jquery庫的提交方式(這是使用純JS代碼提交,實際上很少使用了,但是可以用來理解ajax)<script type="text/javascript">//這里實際上需要在select控件中增加一個onchange來調(diào)用這個方法,然后會自動將選中的值存放于這個classname變量中function getStudent(className){if(className!="-1"){//使用XMLHttpRequest方法,實際上在上面的jquery中也是用的這個方法,只不過已經(jīng)給我們封裝好了var request = new XMLHttpRequest();//使用open方法填寫參數(shù),最后一個true表示使用使用異步提交,可以省略,默認(rèn)值就是truerequest.open("POST","ajax.html?className="+className,true);//發(fā)送ajax請求request.send();//監(jiān)聽請求的狀態(tài),主要有0 1 2 3 4 這幾種,但是一邊只會監(jiān)聽2 3 4 ,其中4表示成功request.onreadystatechange = function(){//判斷只有當(dāng)請求成功時才進(jìn)行下一步if(request.readyState===4){//判斷只有當(dāng)網(wǎng)頁的返回碼為200 OK時才進(jìn)行下一步if(request.status===200){//使用JSON.parse方法格式化返回的json數(shù)據(jù)var data = JSON.parse(request.responseText);//遍歷for(var i = 0; i < document.getElementById("name").length; i++){document.getElementById("name").remove(document.getElementById("name").options[i]);}document.getElementById("name").add(new Option(data[0].name));}}}}}</script>--></html>

第四,最后實現(xiàn)的效果圖

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

以上所述是小編給大家介紹的JavaWeb開發(fā)之使用jQuery與Ajax實現(xiàn)動態(tài)聯(lián)級菜單效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 阜宁县| 南涧| 克什克腾旗| 息烽县| 香格里拉县| 芜湖市| 文昌市| 略阳县| 饶河县| 班玛县| 策勒县| 进贤县| 邹城市| 枣庄市| 天镇县| 城固县| 泸溪县| 临猗县| 海南省| 买车| 新干县| 齐河县| 汉源县| 遵化市| 栖霞市| 邯郸县| 黎平县| 镇雄县| 洱源县| 扎囊县| 泽州县| 三台县| 贵阳市| 永安市| 崇左市| 凌海市| 云浮市| 静海县| 高青县| 闽侯县| 舞钢市|