ajax分页和select级联
使用ajax加载数据字典,生成select
使⽤ajax加载数据字典,⽣成select //使⽤ajax加载数据字典,⽣成select//参数1: 数据字典类型 (dict_type_code)//参数2: 将下啦选放⼊的标签id//参数3: ⽣成下拉选时,select标签的name属性值//参数4: 需要回显时,选中哪个optionfunction loadSelect(typecode,positionId,selectname,selectedId){//1 创建select对象,将name属性指定var $select = $("<select name="+selectname+" ></select>");//2 添加提⽰选项$select.append($("<option value='' >---请选择---</option>"));//3 使⽤jquery 的ajax ⽅法,访问后台Action$.post("${pageContext.request.contextPath}/BaseDictAction", { dict_type_code:typecode},function(data){//遍历//4 返回json数组对象,对其遍历$.each( data, function(i, json){// 每次遍历创建⼀个option对象var $option = $("<option value='"+json['dict_id']+"' >"+json["dict_item_name"]+"</option>");if(json['dict_id'] == selectedId){//判断是否需要回显 ,如果需要使其被选中$option.attr("selected","selected");}//并添加到select对象$select.append($option);});},"json");//5 将组装好的select对象放⼊页⾯指定位置$("#"+positionId).append($select);}function loadUserRoleSelect(typeUrl,positionId,selectname,sId,selectedId) {//创建selectvar $select = $("<select name="+selectname+" id="+sId+"></select>");$select.append($("<option value=''>---请选择---</option>"));$.ajax({"async":true,"type":"post","url":typeUrl,"success":function(data){$.each(data,function(i,json){var $option = $("<option value='"+json.id+"'>"+json.roleName+"</option>");$select.append($option);if(json['userRole'] == selectedId){//判断是否需要回显 ,如果需要使其被选中$option.attr("selected","selected");}})},"dataType":"json"});$("#"+positionId).append($select);}<script type="text/javascript">$(function() {loadUserRoleSelect("${pageContext.request.contextPath}/userRoleList.do","selectBd", "userRole","userRole","${erRole}");});</script>。
两天时间用AJAX写了个无限级的多级联动菜单(ajax+PHP构架)
花了两天时间。
研究AJAX,终于独立完成一个无限组的多级菜单联动功能。
主要特点:就是HTML静态页面可以无刷新的与PHP动态角本文件及数据库交互(这也是AJAX的核心目的)。
以下把代码贴出来。
供大家参考指正:ajax.js文件(位于根目录下js子目录)var xmlHttp;function createXmlHttp(){if(window.XMLHttpRequest){xmlHttp=new XMLHttpRequest();}else{xmlHttp=new ActiveXObject("Microsoft.XMLHttp");}}basic_inc.php(位于根目录下/include子目录下)<?php$DB_SERVER="localhost";$DB_NAME="ajax";$DB_USER="root";$DB_PASSWORD="";?>conn.php(位于根目录下/include子目录下)<?phprequire_once("dir_inc.php");require_once($ROOT_DIR."include/basic_inc.php");@ $db=mysql_connect($DB_SERVER,$DB_USER) or die ("faile!".mysql_error());@mysql_select_db($DB_NAME);?>dir_inc.php(位于根目标下/include子目录下)<?php$ROOT_DIR="../";?>select_menu.html(位于根目录下是核心前台文件)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>select_menu</title><script type="text/javascript" src="js/ajax.js">//这里引用创建xmlHttp对像的文件(对浏览器做过判断)</script><script type="text/javascript">var targetSelId; //申明一个全局变量用来存放当前要操作的对像的IDvar selArray;//申明一个全局数组。
ajax的使用方法
ajax的使用方法Ajax的使用方法一、什么是AjaxAjax(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术。
它通过在后台与服务器进行数据交换,局部刷新页面,实现无需刷新整个页面的交互效果。
Ajax的核心技术是使用XMLHttpRequest对象与服务器进行异步通信。
二、Ajax的基本使用步骤1. 创建XMLHttpRequest对象在使用Ajax之前,首先需要创建一个XMLHttpRequest对象,用于与服务器进行通信。
可以通过以下代码创建XMLHttpRequest对象:```var xhr = new XMLHttpRequest();```2. 设置请求的参数在与服务器进行通信之前,需要设置请求的参数。
可以使用`xhr.open()`方法设置请求的方式、URL地址和是否异步等参数。
例如:```xhr.open('GET', '/api/data', true);```其中,第一个参数是请求方式(GET或POST),第二个参数是请求的URL地址,第三个参数表示是否异步。
3. 发送请求设置好请求的参数之后,可以通过`xhr.send()`方法发送请求。
例如:```xhr.send();```如果是POST方式的请求,可以在`send()`方法中传递要发送的数据。
4. 监听服务器的响应在发送请求之后,需要监听服务器的响应。
可以通过`xhr.onreadystatechange`事件来监听状态的改变,当状态码为4时表示请求已完成。
可以通过以下代码来监听响应:```xhr.onreadystatechange = function() {if (xhr.readyState === 4 && xhr.status === 200) {// 处理服务器的响应数据}}```其中,`xhr.readyState`表示当前请求的状态,`xhr.status`表示服务器的响应状态码。
asp网站实现AJAX数据查询并分页显示
ASP网站通过AJAX查询数据并分页显示,根据一些教程中的分页显示代码,增加了动态查询功能,同时将查询结果生成EXCEL文件供用户下载。
一、显示页面代码:<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title><style type="text/css">body,html,div,p,form,h1,h2,h3,h4,h5,hr{ margin:0; padding:0;font-size:14px;}div#contain{width:80%; margin:0 auto;}table{ text-align:center; border-collapse:collapse; width:100%;}tr.tr1{ background-color:#555; color:#FFF; height:24px; line-height:24px;}p{ margin-bottom:10px;}a.a_page{padding-right:10px; padding-left:10px; border-right:2px solid #EEE; text-decoration:none; color:#FFF;}a.a_page:hover{ color:#F03;}a.a_page_n{padding-right:10px; padding-left:10px; border-right:2px solid #EEE; text-decoration:none; color:#888;}.iframe1{ overflow:hidden; width:100%; }</style><script type="text/javascript">// 查询与分页记录集函数,通过传递两个参数来查询ajax数据,实现查询分页,其中str 为搜索数据,y为记录集页function FF(str,y){var xmlhttp;if (str==""){document.getElementById("txtHint").innerHTML="";return;}if (!y) {y=1;}if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safarixmlhttp=new XMLHttpRequest();}else{// code for IE6, IE5xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}xmlhttp.onreadystatechange=function(){if (xmlhttp.readyState==4 && xmlhttp.status==200){document.getElementById("txtHint").innerHTML=xmlhttp.responseText;}}xmlhttp.open("GET","getorder_list.asp?q="+str+"&page="+y,true);xmlhttp.send();}</script></head><body><div id="contain"><%set conn=server.CreateObject("ADODB.Connection")conn.open "provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database password=ldlt2015;data source=d:\database\customer_care.mdb;"v_year = year(date())v_month = month(date())v_day = day(date())'月份计算if v_month < 12 thenv_next_m = v_month + 1elsev_next_m = 1end ifset rs=server.CreateObject("ADODB.Recordset")sql = "SELECT * from order_list"rs.open sql,conn%><form action="" style="margin-top:15px;"><label><p><select name="customers" onchange="showCustomer(this.value)" style="font-family:Verdana, Arial, Helvetica, sans-serif;"><option value="" selected="selected">选择月份</option><option value="2">201602</option><option value="3">201603</option></select></p></label></form><hr /><div id="txtHint"></div><hr /><iframe src="order_scan_img.asp" width="100%" height="500" frameborder="0" name="order_img" class="iframe1"></iframe></div></body></html>二、AJAX查询代码:<%response.expires=-1order_month = request.QueryString("q")set conn=server.CreateObject("ADODB.Connection")conn.open "provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database password=ldlt2015;data source=d:\database\customer_care.mdb;"v_year = year(date())v_month = month(date())v_day = day(date())'月份计算if v_month < 12 thenv_next_m = v_month + 1elsev_next_m = 1end ifSet fs = server.CreateObject("scripting.filesystemobject")'--假设你想让生成的EXCEL文件做如下的存放filename = Server.MapPath("files\order_list.xls")'--如果原来的EXCEL文件存在的话删除它if fs.FileExists(filename) thenfs.DeleteFile(filename)end if'--创建EXCEL文件set myfile = fs.CreateTextFile(filename,true)set rs=server.CreateObject("ADODB.Recordset")sql = "select * from order_list where order_month = "&order_month&" and order_status = 1"rs.pagesize = 10rs.cursorlocation = 3rs.open sql,conn,1,1pre = truelast = truepage=clng(request.QueryString("page"))if page<1 then page=1if page>rs.pagecount then page=rs.pagecountrs.absolutepage=pageresponse.Charset = ("GB2312") '转换编码,防止中文在输出页面变成乱码response.Write("<table width='100%' align='center' border='1'>")response.Write("<tr class='tr1'>")response.Write("<td width='6%'>月份</td>")response.Write("<td width='6%'>区县</td>")response.Write("<td width='25%'>渠道</td>")response.Write("<td width='10%'>渠道账号</td>")response.Write("<td width='15%'>订购任务</td>")response.Write("<td width='15%'>已完成</td>")response.Write("<td width='13%'>欠产</td>")response.Write("<td width='10%'>协议书</td>")response.Write("</tr>")for i = 1 to rs.pagesizeif rs.eof or rs.bof then exit forresponse.Write("<tr>")response.Write("<td>"& rs.fields("order_month") &"</td>")response.Write("<td>"& rs.fields("district") &"</td>")response.Write("<td>"& rs.fields("c_user") &"</td>")response.Write("<td>"& rs.fields("c_count") &"</td>")response.Write("<td>"& rs.fields("order_nums") &"</td>")response.Write("<td>"& rs.fields("n_nums") &"</td>")response.Write("<td>"& rs.fields("order_nums")-rs.fields("n_nums") &"</td>")response.Write("<td><a href='order_scan_img.asp?img="& rs.fields("uploadpath") &"' target='order_img'>查看协议书</a></td>")response.Write("</tr>")rs.movenextnextresponse.Write("<tr class='tr1'>")response.Write("<td colspan='8'>")if page=1 thenresponse.write("<a href='javascript:void(0)' class='a_page_n'>首页</a><a href='javascript:void(0)' class='a_page_n'>上一页</a>")response.write("<a href='javascript:FF("&order_month&","&(page+1)&")' class='a_page'>"&"下一页"&"</a>")response.write("<a href='javascript:FF("&order_month&","&rs.pagecount&")' class='a_page'>"&"未页"&"</a>")elseif page=rs.pagecount thenresponse.write("<a href='javascript:FF("&order_month&",1)' class='a_page'>"&"首页"&"</a>")response.write("<a href='javascript:FF("&order_month&","&(page-1)&")' class='a_page'>"&"上一页"&"</a>")response.write("<a href='javascript:void(0)' class='a_page_n'>下一页</a><a href='javascript:void(0)' class='a_page_n'>未页</a>")elseresponse.write("<a href='javascript:FF("&order_month&",1)' class='a_page'>"&"首页"&"</a>")response.write("<a href='javascript:FF("&order_month&","&(page-1)&")' class='a_page'>"&"上一页"&"</a>")response.write("<a href='javascript:FF("&order_month&","&(page+1)&")' class='a_page'>"&"下一页"&"</a>")response.write("<a href='javascript:FF("&order_month&","&rs.pagecount&")' class='a_page'>"&"未页"&"</a>")end ifresponse.Write("</td>")response.Write("</tr>")response.Write("</table>")if rs.recordcount <> 0 thenstrSql = "select id as 编号,district as 业务单元,c_user as 渠道,order_nums as 认购任务,n_nums as 已完成from order_list where order_month = "&order_month&" and order_status = 1"Set rstData =conn.execute(strSql)if not rstData.EOF and not rstData.BOF thendim trLine,responsestrstrLine=""For each x in rstData.fieldsstrLine = strLine & & chr(9)Next'--将表的列名先写入EXCELmyfile.writeline strLineDo while Not rstData.EOFstrLine=""for each x in rstData.FieldsstrLine = strLine & x.value & chr(9)nextmyfile.writeline strLinerstData.MoveNextloopend ifresponse.Write("<p>查询数据结果EXCEL文件创建成功,点击---><a href='files/order_list.xls' target='_blank'>下载</a></p>")response.Write("<form action='order_check.asp' method='post' enctype='multipart/form-data' >")response.Write("<div class='p1'>选择文件:<input type='file' name='upfile' class='file_1' /><input type='submit' value=' 确定' /></div></form>")end if%>。
ajax实现分页和分页查询
ajax实现分页和分页查询之前有写过ajax的加载页⾯,是⾮常简单的,⽽且不需要重新刷新页⾯,写起来也是⾮常的⽅便,今天写的分页是不⽤封装page.class.php的,是单纯的js和ajax写出来的⾸先为了页⾯的整齐与美观,我⽤到了bootstrap,需要引进所需要的⽂件包<link href="dist/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet" type="text/css" /><script src="../jquery/jquery-1.11.2.min.js"></script><script src="dist/js/bootstrap.min.js"></script>下⾯是页⾯显⽰的内容<div><input type="text" id="name" /> <input type="button" value="查询" id="chaxun" /></div><br /><table class="table table-striped"><thead><tr><th width="30%">国家代号</th><th width="30%">国家名称</th><th width="40%">⽗级代号</th></tr></thead><tbody id="tb"></tbody></table><br /><div><ul class="pagination" id="fenye"></ul></div>下⾯是js部分了,⽤的ajax来写<script type="text/javascript">var page = 1; //当前页//加载数据Load();//加载分页信息LoadFenYe();//给查询加点击事件$("#chaxun").click(function(){//将当前页重置page = 1;//加载数据Load();//加载分页信息LoadFenYe();})//加载分页信息的⽅法function LoadFenYe(){var s = "";var name = $("#name").val();var minys = 1;var maxys = 1;$.ajax({async:false,data:{name:name},type:"POST",url:"zys.php",dataType:"TEXT",success: function(data){maxys = data;}});//加载上⼀页s += "<li class='syy'><a>«</a></li>";//加载分页列表for(var i=page-4;i<page+5;i++){if(i>=minys && i<=maxys){if(i==page){s += "<li class='active list'><a>"+i+"</a></li>";}else{s += "<li class='list'><a>"+i+"</a></li>";}}}//加载下⼀页s += "<li class='xyy'><a>»</a></li>";//显⽰分页列表$("#fenye").html(s);//给列表加点击事件$(".list").click(function(){//改变当前页page = $(this).text();//加载数据Load();//加载分页信息LoadFenYe();})//上⼀页加点击事件$(".syy").click(function(){//改变当前页if(page>1){page = parseInt(page)-1;//加载数据Load();//加载分页信息LoadFenYe();}})//下⼀页加点击事件$(".xyy").click(function(){//改变当前页if(page<maxys){page = parseInt(page)+1;//加载数据Load();//加载分页信息LoadFenYe();}})}//加载数据的⽅法function Load(){var name = $("#name").val();$.ajax({url:"jiazai.php",data:{page:page,name:name},type:"POST",dataType:"TEXT",success: function(data){var str = "";var hang = data.split("|");for(var i=0;i<hang.length;i++){var lie = hang[i].split("^");str = str+"<tr><td>"+lie[0]+"</td><td>"+lie[1]+"</td><td>"+lie[2]+"</td></tr>"; }$("#tb").html(str);}});}jiazai.php页⾯的代码如下:<?phpinclude("DADB.class.php");$db=new DADB();$page=$_POST["page"];$key=$_POST["name"];$num=20;$tiao=($page-1)*$num;$sql="select * from chinastates WHERE areaname like '%{$key}%' limit {$tiao},{$num}";echo $db->StrQuery($sql,1);zys.php代码如下:<?phpinclude("DADB.class.php");$db=new DADB();$key=$_POST["name"];$sql="select count(*) from chinastates where areaname like '%{$key}%'"; //显⽰总共有多少条内容$zts=$db->StrQuery($sql);echo ceil($zts/20);这样分页和查询功能就可以完全实现了以上就是本⽂的全部内容,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,同时也希望多多⽀持!。
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
jQuery插件select2利⽤ajax⾼效查询⼤数据列表(可搜索、可分页)select2是⼀款jQuery插件,是普通form表单select组件的升级版。
可以定制搜索、远程数据集(Remote data,本篇主要介绍点)、⽆限滚动(数据分页功能,这⼀点很妙)、还有很多⾼端的参数设置(有需要的下次介绍)。
内置了40种国际化语⾔,不过这⾥我们只需要⽤到中⽂。
同时⽀持现代和传统浏览器内置,甚⾄包括惹⼈不⾼兴的IE8。
那么,现在让我们开始⼀段select2的奇幻之旅吧!⼀、惊艳的效果,来⼀睹为快吧本地实战结果⼆、导⼊css和js到⽹站上1.使⽤CDN,节省⾃⼰⽹站的流量<link href="https:///ajax/libs/select2/4.0.3/css/select2.min.css" rel="external nofollow" rel="stylesheet" /><script src="https:///ajax/libs/select2/4.0.3/js/select2.min.js"></script>2.下载⽂件到本地,可以做⼀些个性的定制(⽐如说修改提⽰语)<!-- select2 --><link rel="stylesheet" type="text/css" href="${ctx}/common/select2/css/select2.css" rel="external nofollow" /><script type="text/javascript" src="${ctx}/common/select2/js/select2.full.js"></script><!-- 中⽂国际化还需要进⾏参数设置 --><script type="text/javascript" src="${ctx}/common/select2/js/i18n/zh-CN.js"></script>三、真⼑真枪的⼲起来第⼀步、定制页⾯个性化元素<select name="parentid" class="js-data-example-ajax" href="${ctx}/member/loadMembersInfo.do?uid=${mem.uid}" rel="external nofollow" style="width:400px" inputMessage="请输⼊会员编号(可部分匹配)"><option selected="selected" value="666">沉默王⼆</option></select>Java端通过name属性可获得select的value值。
ASP Ajax 级联菜单
ASP Ajax 级联菜单网站中,三级联动也会经常用到,例如省市县的选择。
通过纯JavaScript编程,需要在页面中添加省市县的数据,代码比较乱,并且添加比较麻烦。
为了解决上述问题,将省市县的数据存入数据库,通过Ajax动态加载所需数据,是比较完美的解决方案。
本实例通过省市县的三级联动,实现了动态加载所需数据效果。
步骤如下所示:(1)首先为本实例设计数据库,该数据库Access版本,可以从因特网或者本书配套光盘中获得。
该数据库的文件名称为area.mdb,数据库中有一个省份表,表设计视图如表8-2所示。
该数据库中还有一个城市表,表设计视图如表8-3所示。
表8-3 city表的字段表8-4 area表的字段(2)新建一个名为index.html的HTML文件,该文件为用户提供选择省市县(3)联动功能通过JavaScript代码实现,接下来编写JavaScript函数,首先来看向服务器端发送请求的show()函数。
该函数有三个参数,selectobj为用户选择的下拉框ID,selectvalue为用户选择下拉框的值,obj为服务器端返回的数据要填充(4)然后编写handleStateChange()函数。
该函数接收服务器端返回的数据,并将数据交给BuildSel()函数进行处理。
代码如下所示:(5)编写BuildSel()函数。
该函数将字符串转换为数组,添加到指定的下拉列(6)编写该页面首次加载时的初始函数init()。
该函数调用show()函数,并将showobj变量赋值为“province”,实现页面首次加载时,显示省份下拉列表框中数据的功能。
代码如下所示:(7)在页面的<body>标记添加onload事件,实现当页面加载时,执行init()函数的功能。
代码如下所示:(8)客户端编写完成,接下来编写服务器端程序。
新建名为Ajax.asp的asp 文件,该文件获得客户端请求,从数据库中读取响应信息,返回给客户端。
el-table在ajax分页时支持单页全选和所有页全选
el-table在ajax分页时⽀持单页全选和所有页全选 需求:el-table中,ajax分页的情况下,要⽀持单页全选和所有页全选功能。
运⾏效果如下图所⽰: 说明:由于本篇主要讲解全选,所以只会罗列出和其相关的核⼼代码,并不会将所有的代码⼀并贴出。
界⾯代码:<el-table :data="tableData":height="tableHeight"borderstyle="width: 100%"ref="table"@selection-change="handleSelectionChange"><el-table-column prop="id"fixedalign="center"><el-table-column type="selection"width="75"></el-table-column><template slot="header"><div><el-checkbox v-model="checkedAll"@change="changeCheckAll">所有</el-checkbox></div></template></el-table-column> ...... </el-table><pager :pager="pager"@query="getList"@setPager="onChangePage"></pager>table上使⽤了ref属性,因为全选和反选时要⽤到dom操作⽅法toggleRowSelection,同样,表格⾃动铺满纵向屏幕时,也需要进⾏dom 操作,这并⾮本节所讲内容,只是简单提⼀下,el-table并没有像layui中的table那样提供百分⽐-固定像素的⽅式响应式制定表格⾼度,我们得⼿动⽤js计算浏览器屏幕⾼度。
利用Jsp+Ajax技术建立级联菜单的方法
% > < / o p t i o n >
< %
块 ( i f( x m l H t t p . r e a d y S t a t e = = 4& &x m l H t t p . s t a t u s = = 2 0 0 )
}
% >
< / s e l e c t > < / t d >
re tur n
∥查询 出数 据库 中设备种类 的数据, 非本文重点, 代 码在此省略
% > < o p t i o n v a l u e = " < %= m s bz ld m % > > < % = m s b z 1
—
~
—
} ) } f u n c t i o n s t a t e c h a n g e d 1 ( ) ∥返 回后将数据 ̄, X , g g H i n t
1 AJ AX 基 本原 理
A J A X 是一种在无需重新加载整个 网页的情况下, 能够更新
X M L H t t p R e q u e s t 对象 {
v a t o b j X m l H t t p = n u l l
部 分网页的技术 。 首先在 网页中, 将需要 更新 的部分定 义为一
< / s e l e c t > < / d i v > < / t d >
C a i d a n 2 . j s p 只有一个 “ 设备规格 ”的下拉菜 单 , 根 据参
数查询 出对应 设备 规格的数据 后, 形成可选项 , 其代码类似 于
在m a i n 网页的h t m l 之后添加J a v a s c r i p程序
o b j X m l H t t p . o n r e a d y s t a t e c h a n g e = h a n d 1 e r r e t u r n o b j X m l H t t p
前端框架中的表单联动与级联选择技巧
前端框架中的表单联动与级联选择技巧在开发前端应用时,表单的联动与级联选择是非常常见且重要的需求。
这些功能可以帮助用户更方便地填写表单信息,提高用户体验。
在这篇文章中,我们将讨论前端框架中实现表单联动与级联选择的一些技巧。
1. 使用事件监听实现表单联动表单联动是指当一个表单元素的值发生变化时,另一个表单元素的状态也随之改变。
例如,选择一个国家后,下拉菜单中的省份列表会相应地改变。
在前端框架中,我们可以通过监听表单元素的change事件来实现表单联动。
当表单元素的值发生变化时,我们可以在事件处理程序中根据当前值来更新其他表单元素的状态。
举个例子,在Vue框架中,我们可以使用v-model指令来绑定表单元素的值,并使用watch属性来监听值的变化。
当触发change事件时,我们可以在监听函数中处理相关逻辑。
2. 利用数据绑定实现级联选择级联选择是指一个表单元素的选择结果会影响到另一个表单元素的选项列表。
例如,在一个城市选择表单中,选择一个省份后,城市列表应该根据该省份的选择结果进行更新。
在前端框架中,我们可以通过数据绑定来实现级联选择。
首先,我们需要将省份和城市的数据进行绑定,例如使用数组或对象存储。
然后,我们可以根据当前选择的省份来动态生成城市列表。
举个例子,在React框架中,我们可以使用state来存储省份和城市的数据。
当选择省份的表单元素的值发生变化时,我们可以在onChange事件处理程序中更新state中的城市数据。
然后,在城市选择表单中,我们可以根据状态中存储的城市数据来生成选项列表。
3. 使用组件库加速开发前端框架中常常有一些优秀的组件库,它们提供了丰富的表单组件和相关的功能,可以帮助我们快速实现表单联动和级联选择。
例如,在Ant Design框架中,它提供了Form组件,可以方便地进行表单的布局和验证。
同时,Ant Design还提供了Cascader组件,可以实现级联选择的功能。
我们只需要使用这些组件,并按照文档提供的接口来配置和使用,就能够快速地实现表单联动和级联选择。
使用AJAX技术实现网页级联下拉列表
引 言
A J A X全称 “ A s y n c h r o n o u s J a v a S c r i p t A n d X ML ”
A J A X的优点在于可以进行 页面的局部更新 、 通
过异步方式提升用户体验 、节省服务器带宽及 网络行效率 , 获取数据具有更强的 目
Ab s t r a c t :AJ AX c a n i mp r o v e t h e u s e r e x p e r i e n c e a n d i n t e r a c t w i t h We b a p p l i c a t i o n s e a s i l y . T h i s p a p e r d i s c u s s e s t h e AJ AX We b a p p l i c a t i o n mo d e l a n d i mp l e me n t a t i o n p r o c e s s ,r e a l i z e s t h e w e b p a g e c a s c a d i n g
交互 式 网页 [ 1 ] 。
法维护“ 历史” 状态 , 对移动设备的支持不够好[ 2 1 。 A J A X的核 心 是 J a v a S c i r p t对 象 XM L H t t p R e — q u e s t , 它是一种支持异步请求 的技术 , 该对象实现了
A J A X可 以在 服 务器 和 浏览 器 之 间 通过 J a v a S c r i p t 创 建 了一个 中间层 ( 这个 中间层 可被 称 为 A J A X 引擎 ) ,
中图分类号 : T P 3 9 3 文献标识码 : A
Re a l i z a t i o n o f W e b Pa g e Ca s c a d i n g
一种基于Ajax技术的分页方法
显示方法。
Jv Sr t aa cp 是一种脚本语言 , H ML D M、 M i 将 T 与 O x —
计 算 机 系 统 应 用
20 年 第 1 期 08 2
一
种 基 于 A jx技 术 的分 页 方法 a
A P gn e h oo y B s d o a a igT c n lg a e nAjx
廖新飞 ( 温州职业技术学院 计算机 系 浙江 温州 3 5 3 ) 2 0 5
e e.( i o A i X b d){/ E l f wn w.dv O j s d e e /I浏览器
/ 创建 X H p e u s 对象 / ML M R q et
hp 1 1
—
rq et= nw dvX b d( Mi oo . ML T e us e A i O i “ c sf X H — e e r t
1X T ) H ML和 c S S
X T 和 C S用于 实现客 户端 标 准化 的界 面表 H ML S 示。C s 供 了从 内容 中分 离应 用样 式和 设 计 的机 S提
制。X T 是一种 用 X 重写 H ML H ML ML T 的标 记语言 。 2 D M( ou e t b d M d 1 ) O D c m n l o e) O e
cp , 由 JvSr t 回调 函数 中通过‘O 对页 面 r t再 i ao cp 在 i DM 中的 H ML T 元素的操作 , 实现丰富友好的界面和交互。 传统的 We b应用程序采 用同步 交互过程 , 在交 互
Thinkphp5之ajax分页实现_paginate()参数详细
Thinkphp5之ajax分页实现_paginate()参数详细Thinkphp5 做数据搜索需要带关键词分页,如何将查询条件带⼊到分页中,本⽂详细介绍Thinkphp5 分页带参数⼀、基本使⽤⽅法:$list = Db::name('user')->where('status',1)->paginate(10);⼆、查看thinkphp5 paginate()函数paginate()函数可以带三个参数:$listRows 每页数量数组表⽰配置参数$simple 是否简洁模式或者总记录数如果为true,那么分页的就是只有上⼀页和下⼀页$config 配置参数具体可以⾃⼰传⼊或者在配置⽂件中配置$config 参数具体配置参数描述list_rows每页数量page当前页path url路径query url额外参数fragment url锚点var_page分页变量type分页类名三、解决⽅案:$list = Db::name('user')->where('status',1)->paginate(10,false,['type' => 'Bootstrap','var_page' => 'page',//使⽤jqery ⽆刷新分页'path'=>'javascript:AjaxPage([PAGE]);'//第⼀种⽅法,使⽤数组⽅式传⼊参数'query' => ['keyword'=>$keyword],// 第⼆种⽅法,使⽤函数助⼿传⼊参数// 'query' => request()->param(),]);使⽤时在html模板页相应位置放⼊{$list->render()}<!-- 分页 --><div class="row"><div id="result">{$list->render()}</div></div>此时页⾯⾥会⽣成⼀个页码界⾯.虽然⽅法很简单,但是存在⼀个问题,每次点击页⾯都要刷新,⽤户体验很不好,所以要在tp5原有分页类的基础上加⼀个ajax操作,直接上代码:模板jquery_ajax代码:<script>var AjaxPage = function(page){$.ajax({url:'http://xxx/public/index.php/back/topic/ajaxList',type:'post',dataType:'json',data: {apage:page},success:function(data){//console.log(data)$("#result").html(data.page);}});}</script>控制器controller\Topic.php//显⽰分类管理界⾯public function listAction(){$list = model('Topic')->paginate(10,false,['type' => 'Bootstrap','var_page' => 'page','path'=>'javascript:AjaxPage([PAGE]);',//使⽤函数助⼿传⼊参数'query' => request()->param(),]);// $res = $mem->getList();$this->assign('list',$list);return $this->fetch('list');}public function ajaxListAction(){$page = request()->param('apage');if (!empty($page)) {$rel = model('topic')->paginate(10,false,['type' => 'Bootstrap','var_page' => 'page','page' => $page,'path'=>'javascript:AjaxPage([PAGE]);',]);$page = $rel->render();}return json(['list'=>$rel,'page'=>$page]);}因为使⽤了模型⽅法,还要定义⼀个模型类model\Topic.php<?php/*** Created by PhpStorm.* User: houzhyan* mail: houzhyan@* Locator: http://www.phpclass.top* Date: 2017/10/23* Time: 11:58*/namespace app\back\model;use think\Model;class Topic extends Model {}测试结果:。
ajax实现下拉框与表格中的单选按钮联动,数据从数据库中查出
ajax实现下拉框与表格中的单选按钮联动,数据从数据库中查出js:$(function() {$('#userType').change(function() {var userType = $(this).val();$("input[type=radio]").attr("checked", false);ajaxForAccessTypeChanged(userType, false);});var userType = $('#userType').val();ajaxForAccessTypeChanged(userType, false); //当下拉框的值改变时,调⽤下⾯的⽅法});function ajaxForAccessTypeChanged(userType) {$.ajax({url : 'a_usr_s01_SelectedUserTypeAjaxBL.do',type : 'post',data : {'userType' : userType},success : function(data, textStatus) {if (data == null || data == "")return;var dataObj = eval("(" + data + ")");$.each(erTypeAccess, function(idx, item) {if (item == null || item == "")return;$("#function_" + item.function_code + " input[value=" + item.accessType + "]").attr("checked", true);});},error : function(XMLHttpRequest, textStatus, errorThrown) {alert("An error has occurred: " + textStatus);}});}jsp:<logic:iterate id="listFunction" name="listFunction" scope="request"><tr id="function_<bean:write name="listFunction" property="idFunction"/>"><td class="tdLeft"><bean:write name="listFunction" property="moduleName" /><html:hidden name="listFunction" property="idModule" indexed="true" /></td><td class="tdLeft"><bean:write name="listFunction" property="functionName" /><html:hidden name="listFunction" property="idFunction" indexed="true" /></td><td class="colAccessType"><html:radio styleId="radio" name="listFunction" property="accessType" indexed="true" value="F" /></td><td class="colAccessType"><html:radio styleId="radio" name="listFunction" property="accessType" indexed="true" value="V" /></td><td class="colAccessType"><html:radio styleId="radio" name="listFunction" property="accessType" indexed="true" value="X" /></td></tr></logic:iterate>BLogic:/*** @(#)A_USR_S01_SelectedUserTypeAjaxAction.java** HMSB Online Service Booking System** Version 1.00** Created 2012-11-16** Copyright (c) 2012 Honda Malaysia. All rights reserved.*/package .honda.servicebooking.a_usr.action;import java.io.PrintWriter;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import .honda.servicebooking.a_usr.dto.A_USR_S01_UserTypeAccess;import jp.terasoluna.fw.dao.QueryDAO;import jp.terasoluna.fw.service.thin.BLogicResult;import jp.terasoluna.fw.web.struts.actions.AbstractBLogicAction;/*** @author i-fannch**/public class A_USR_S01_SelectedUserTypeAjaxAction<P>extends AbstractBLogicAction<P> {private QueryDAO queryDAO;/* (non-Javadoc)* @see jp.terasoluna.fw.web.struts.actions.AbstractBLogicAction#doExecuteBLogic(ng.Object)*/public BLogicResult doExecuteBLogic(P arg0) throws Exception {BLogicResult res = new BLogicResult();return res;}protected void postDoExecuteBLogic(HttpServletRequest request,HttpServletResponse response, P params, BLogicResult result)throws Exception {String userType = request.getParameter("userType");if(userType==null||userType.trim().length()<=0)return;List<A_USR_S01_UserTypeAccess> list = queryDAO.executeForObjectList("SELECT.A_USR.GET_LIST_ACCESSTYPE", userType);if(list!=null&&list.size()>0) {PrintWriter out = response.getWriter();String json="{userTypeAccess: [";for(A_USR_S01_UserTypeAccess ut : list)json += "{function_code: '"+ ut.getIdFunction() +"', accessType: '"+ ut.getAccessType() +"'},";json.substring(0, json.length()-1);json += "]}";out.print(json);out.close();}}public QueryDAO getQueryDAO() {return queryDAO;public void setQueryDAO(QueryDAO queryDAO) { this.queryDAO = queryDAO;}}。
跟我学AJAX技术——如何应用AJAX技术实现级联菜单的Web应用示例
1.1跟我学AJAX技术——如何应用AJAX技术实现级联菜单的Web应用示例1.1.1常规的Web级联菜单所存在的问题以前,为了避免每次对菜单的操作引起的重载页面,不采用每次调用后台的方式,而是一次性地将级联菜单的所有数据全部读取出来并写入到数组中,然后根据用户的操作用JavaScript+CSS来控制它的子集项目的显示,这样虽然解决了操作响应的速度、不重载页面以及避免向服务器频繁发送请求的问题,但是如果用户不对菜单进行操作或者只对菜单中的一部分进行操作的话,那读取的数据中的一部分就会成为多余而浪费用户的资源,特别是在菜单的结构复杂、数据量大的情况下,这样的弊端就更为突出!而如果采用AJAX技术来实现(JavaScript+CSS+AJAX),在页面初始化的时候,我们只需要读出其一级菜单的数据并显示出。
而在用户操作时,则通过AJAX向后台请求其下一级的菜单数据并显示出------这样,需要什么就下载什么!1.1.2构建本示例的Web应用项目1、添加一个JSP页面ajaxMenu.jsp(1)创建ajaxMenu.jsp页面文件(2)在该页面中添加一个表格,并且在其中放上超链接<%@ page language="java" pageEncoding="GB18030"%><%@ taglib uri="/tags-bean" prefix="bean" %><%@ taglib uri="/tags-html" prefix="html" %><%@ taglib uri="/tags-logic" prefix="logic" %><%@ taglib uri="/tags-tiles" prefix="tiles" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html:html lang="true"><head><html:base /><script language="javascript" src="ajaxMenu.js"></script><title>ajaxMenu1.jsp</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><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><body><table width="200" border="0" cellspacing="0" cellpadding="0"> <tr><td height="20"><a href="#" onclick="showSubMenu('menu_1')" >菜单一</a></td></tr><tr><td height="20" id="menu_1" style="display:none"> </td></tr><tr><td height="20"><a href="#" onclick="showSubMenu('menu_2')">菜单二</a></td><tr ><td height="20" id="menu_2" style="display:none"> </td></tr></table></body></html:html>(3)ajaxMenu.jsp页面文件的预览示图2、再添加JavaScript的文件ajaxMenu.js(1)创建JavaScript文件ajaxMenu.js(2)编程ajaxMenu.js文件中的功能实现代码var httpRequest;var currentPos;function showSubMenu(newCurrentPos){document.getElementById(newCurrentPos).parentNode.style.display="";currentPos=newCurrentPos;if(document.getElementById(newCurrentPos).style.display == "none"){document.getElementById(newCurrentPos).style.display = "";sendRequest("/AJAXWebApp/ajaxmenu.do?playPos="+newCurrentPos);}else{document.getElementById(newCurrentPos).style.display = "none";}}function sendRequest(requestURL){httpRequest=getHTTPRequestObject();httpRequest.onreadystatechange = processHttpResponse;httpRequest.open("GET", requestURL, true); // Get 请求方式的代码httpRequest.send(null);}function getHTTPRequestObject(){var httpRequestObject;if (window.XMLHttpRequest){ // Mozilla, Safari, ...httpRequestObject = new XMLHttpRequest();}else if (window.ActiveXObject){ // IEtry{httpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");}catch (e){try{httpRequestObject= new ActiveXObject("Msxml2.XMLHTTP");}catch (e2){alert("您的浏览器有问题!");}}}return httpRequestObject;}function processHttpResponse (){if (httpRequest.readyState == 4){if (httpRequest.status == 200){ //检查是否成功接收了服务器响应parseResponseText();}else if(httpRequest.status == 404){alert("没有找到与所请求的文件相匹配的资源!");}else{alert("你所请求的页面发生异常,错误代码为:"+httpRequest.status);}}else{document.getElementById(currentPos).innerHTML = "检测中,请稍等...";}}function parseResponseText(){document.getElementById(currentPos).innerHTML=httpRequest.responseText;}function LoadJS(file) //动态加载JS文件{var head = document.getElementsByTagName('HEAD').item(0);var script = document.createElement('SCRIPT');script.src = file;script.type = "text/javascript";head.appendChild(script);}3、添加一个Action类(1)切换到可视化设计视图(2)设置类名称为AjaxMenuAction,程序包名称为com.px1987.webajax.action /ajaxmenu(3)将产生出下面的Action类(4)编程AjaxMenuAction程序类中的功能实现方法package com.px1987.webajax.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import java.io.*;public class AjaxMenuAction extends Action{public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {response.setContentType("text/html; charset=GBK");try{PrintWriter out = response.getWriter();String playPos = request.getParameter("playPos");if(playPos.equals("menu_1")){ //实际可以访问数据库表来获得各个子菜单项目String subMenuText=" <a href='#'>菜单一中的子菜单一</a><br>"+" <a href='#'>菜单一中的子菜单二</a><br>"+" <a href='#'>菜单一中的子菜单三</a>";out.write(subMenuText);out.close();}else if(playPos.equals("menu_2") ){String subMenuText=" <a href='#'>菜单二中的子菜单一</a><br>"+" <a href='#'>菜单二中的子菜单二</a><br>"+" <a href='#'>菜单二中的子菜单三</a><br>"+" <a href='#'>菜单二中的子菜单四</a>";out.write(subMenuText);out.close();}}catch(IOException e){System.out.println(e.getMessage());}return null;}}4、执行该功能(1)部署本示例项目(2)输入http://127.0.0.1:8080/StrutsAJAXWebApp/ajaxMenu.jsp(3)点击上面的菜单的链接,将展开对应的菜单项目(4)如果再次点击上面的菜单的链接,将关闭对应的菜单项目。
基于AJAX的数据分页的设计与实现
图 1 标准 AA 交互过程 JX
2 A A 定 义 JX
A X是一种客户端方法 , 可以与 JE 、N T、 } 、 U Y和 C I 2 E . E P{ R B P G 脚本交互 , 它并 不关心服 务器是 什么。
收 稿 日期 :0 70 — 1修 订 日期 :0 70 —1 2 0 —83 ; 2 o —91
1 引 言
B S请求响应机制是 We / b系统使用的服务方式 , 也是 当今最为流行的体系结构 , 受到了开发人员和用户的 认同。传统的 We 应用程序采用同步交互过程。在这种情况下 , b 当用户触发一个 H兀、请求到服务器 , P 服务器 对其进行处理后再返 回一个新的 H ML页到客户端 , T 每当服务器处理客户端提交的请求时 , 客户只能空闲等待。 即使从 服 务器 端得 到很 简 单 的一 个数 据 , 要返 回一个 完 整 的 HTML页 , 用 户每 次要 浪 费 时 间 和带 宽 去 重 新 都 而 读取 整个 页 面 , 种做 法实 际 上是 一 种 浪 费 ,因为 在前 后 2个 页 面 中的 大部 分 HT 这 ML代码往 往 是 相 同的 。 由于 每次应用的交互都需要 向服务器发送请求 , 应用的响应时间就依赖于服务器 的响应时间。这就导致 了用户界面 的响应 比本地应用慢得多 , 产生 了一定程度的滞后效应。 与此 不 同的是 , AX采 用 异 步交 互 过程 , 准 AX交 互 过程 如 图 1所示 。在 AX应 用 程 序 中 , 以仅 标 可 向服务器发送并取 回必需的数 据 , 它使用 X H tR q e 对象将用 户信息 以异步通信地方式发送 到服 务器 ML t eus p t 端, 并在客户端采用 JvSr t aaci 处理来 自服 务器的响应。这样 , p 在服务器和浏览器之间交换 的数 据就会 大量减 少, 用户 就能 看 到响应 更 快 的应 用 , 户 可 以感觉 到 几乎 所 有 的操 作 都 会 很 快 响应 没 有 页 面 重 载 (白屏 )的 等 用 待。同时 , 很多的处理工作可以在发出请求 的客户端机器上完成 , 大大减轻 We 服务器的负担和处理时间。最 b 重要的是 , 用户甚至不知道浏览器正在与服务器通信 : b We 站点看起来是即时响应的。
Ajax商品分类三级联动的简单实现(案例)
Ajax商品分类三级联动的简单实现(案例)思路分析:效果:当页⾯加载时,利⽤ajax异步向后台请求数据,加载⼀级商品类别,当选择⼀级商品时加载⼆级商品,选择⼆级商品加载三级商品。
实现:1、当拿到数据后加载pid为0的商品,并动态创建option将商品追加到⼀级菜单中,并设置value值2、当选择⼀级商品时加载pid=当前id的商品,并创建option将商品追加到⼆级菜单中,并设置value值3、当选择⼆级商品时加载pid=当前id的商品,并创建option将商品追加到三级菜单中,并设置value值页⾯效果:$(function(){//请求路径var url="03goods.php";//option默认内容var option="<option value='0'>未选择</option>";//获取jq对象var $sel1=$(".sel1");var $sel2=$(".sel2");var $sel3=$(".sel3");//⾃动⽣成⼀个<option>元素function createOption(value,text){var $option=$("<option></option>");$option.attr("value",value);$option.text(text);return $option;}//加载数据function ajaxSelect($select,id){//get请求$.get(url,{"pid":id},function(data){$select.html(option);for(var k in data ){$select.append(createOption(data[k].id,data[k].name));}},"json");}//⾃动加载第⼀个下拉菜单ajaxSelect($sel1,"0");//选择第⼀个下拉菜单时加载第⼆个$sel1.change(function(){var id=$sel1.val();if(id=="0"){$sel2.html(option);$sel3.html(option);}else{ajaxSelect($sel2,id);}});//选择第⼆个下拉菜单时加载第三个$sel2.change(function(){var $id=$sel2.val();if($id=="0"){$sel3.html(option);}else{ajaxSelect($sel3,$id);}});});后台代码:<?phpheader('Content-Type:text/html; charset=utf-8');//数据$arr=array(//array(分类id,分类名,分类的⽗id)array('id'=>'1','name'=>'数码产品','pid'=>'0'),array('id'=>'2','name'=>'家电','pid'=>'0'),array('id'=>'3','name'=>'书籍','pid'=>'0'),array('id'=>'4','name'=>'服装','pid'=>'0'),array('id'=>'5','name'=>'⼿机','pid'=>'1'),array('id'=>'6','name'=>'笔记本','pid'=>'1'),array('id'=>'7','name'=>'平板电脑','pid'=>'1'),array('id'=>'8','name'=>'智能⼿机','pid'=>'5'),array('id'=>'9','name'=>'功能机','pid'=>'5'),array('id'=>'10','name'=>'电视机','pid'=>'2'),array('id'=>'11','name'=>'电冰箱','pid'=>'2'),array('id'=>'12','name'=>'智能电视','pid'=>'10'),array('id'=>'13','name'=>'编程书籍','pid'=>'3'),array('id'=>'14','name'=>'JavaScript','pid'=>'13'),);//获取指定分类的商品function getByPid($arr,$pid){$result=array();foreach($arr as $v){if($v['pid']==$pid){$result[]=$v;}}return $result;}//获取请求参数$pid=isset($_GET['pid'])?$_GET['pid']:'0';$result=getByPid($arr,$pid);//输出json数据echo json_encode($result);>以上这篇Ajax商品分类三级联动的简单实现(案例)就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
java AJAX实现级联下拉框
new
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE class SYSTEM "product.dtd" > <class> <class1 className="电脑配件" id="1"> <class2 className="内存" id="1"> <class3 id="1" className="kingmax"></class3> <class3 id="2" className="kingston"></class3> <class3 id="3" className="samsung"></class3> <class3 id="4" className="hydadi"></class3> <class3 id="5" className="ibm"></class3> </class2> <class2 className="硬盘" id="2"> <class3 id="6" className="hithait"></class3> <class3 id="7" className="IBM"></class3> <class3 id="8" className="samsung"></class3> <class3 id="9" className="westdata"></class3> </class2> </class1> <class1 className="食品配件" id="2"> <class2 className="汉堡包" id="1"> <class3 id="1" className="麦当劳"></class3> <class3 id="2" className="肯得基"></class3> <class3 id="3" className="罗杰丝"></claቤተ መጻሕፍቲ ባይዱs3>
ajax两级联动下拉列表和显示相应数据
ajax两级联动下拉列表和显示相应数据
本人实现了 ajax 异步实现两级联动的下拉列表和分类显示数据:应该算是充分的实现例子,包含了 JS + CSS 的简单设计
显示:显示书籍大类 ----> 无刷新的显示相对应的书籍小类;
选择书籍小类时候,自动显示相应的书籍信息!
自己试试吧,试试才知道,很好用的
纯手写的实例,仅供学习探究!
Jsp页面:
<%@ page language="java" import="java.util.*,com.AjaxDemo.optionLists.Dao,java.sql.*;"
contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
table{
width: 500px;
text-align: center;
font: bold fantasy 25px;
}
td{
height:35px;
width: 95px;
border-bottom-width:1px;
border-bottom-color: orange;
border-bottom-style: solid;
}
书籍大类:
<%}}catch (SQLException e) {e.printStackTrace();}finally{data.close();} %>
书籍小类:
请选
择
书
籍
类
别
!。
select多级联动逻辑
多级联动逻辑的实现方式有多种,具体实现方式取决于所使用的编程语言和框架。
以下是一个基本的实现思路:
1.确定联动级别:首先需要确定联动级别,即有多少级下拉列表需要联动。
2.初始化数据:对于每一级下拉列表,需要初始化数据。
数据通常来自于数据库或后
端接口。
3.监听事件:监听用户选择下拉列表项的事件,例如监听下拉列表的change事件。
4.更新数据:当用户选择了一个下拉列表项后,需要获取下一级下拉列表的数据,并
更新下一级下拉列表的选项。
5.递归调用:对于每一级下拉列表,重复以上步骤,直到所有级别的下拉列表都更新
完毕。
6.异步加载:如果下拉列表的数据量较大,可以考虑使用异步加载的方式,即当用户
选择下一级下拉列表时,才从后端加载下一级的数据。
具体的实现方式可以参考相关的前端框架或库,例如jQuery、Bootstrap等,也可
以根据具体需求自行实现。
在实现过程中需要注意数据同步问题,确保不同级别的下拉列表数据一致性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
function queryStaff(jsonStaffInfo,curPage){$("tr:gt(1)").each(function(){if($(this).attr("id")=="hideTr"){$(this).remove();}});$.ajax({type:"POST",dataType:"text",url:'<c:urlvalue="/queryStatistics/general.do?method=queryStaff"/>',data:{"jsonStaffInfo":jsonStaffInfo,"curpage":curPage},cache:false,complete:function(xhr){var pageModel =eval("("+xhr.responseText+")");var i = 0;//序号$.each(pageModel,function(n,value){if(n=="reList"){$.each(pageModel["reList"],function(m,result){i++;//每次自增1$("#infoList").show();$("#infoList").append('<trid="hideTr"><td class="td_single_center">'+ i +'</td><td class="td_single_center">'+result["staffNum"]+'</td><td class="td_single_center">'+result["quartersName"]+'</td><td class="td_single_center">'+result["staffName"]+'</td><td class="td_single_center">'+result["proName"]+'</td><td class="td_single_center">'+result["cityName"]+'</td><td class="td_single_center"><ahref="/DIMS/queryStatistics/general.do?method=queryGeneralInquiriesBy Id&staffid='+result["staffId"]+'"target="mainFrame">详细信息</a></tr>');});}});$("#infoList").append('<trid="hideTr"><td colspan="7" class="td_single_center">共有'+pageModel["itemCount"]+'条记录,第'+pageModel["curPage"]+'/'+pageModel["totalPage"]+'页 <a>首页</a> <a>上一页</a> <a>下一页</a> <a>末页</a></td></tr>');parent.frames[0].pPage =pageModel["curPage"];//保存页码//首页if(pageModel["perindex"]<pageModel["curPage"]&&pageModel["perinde x"]>0){$("a:contains('首页')").attr("href","javascript:void(0);");$("a:contains('首页')").bind('click',function(){queryStaff(jsonStaffInfo,1);});}//上一页if(pageModel["perindex"]>0){$("a:contains('上一页')") .attr("href","javascript:void(0);");$("a:contains('上一页')") .bind('click',function(){queryStaff(jsonStaffInfo,pageModel["perindex"]);});}//下一页if(pageModel["nextindex"]>0){$("a:contains('下一页')") .attr("href","javascript:void(0);");$("a:contains('下一页')") .bind('click',function(){queryStaff(jsonStaffInfo,pageModel["nextindex"]);});}//末页if(pageModel["totalPage"]>pageModel["curPage"]){$("a:contains('末页')").attr("href","javascript:void(0);");$("a:contains('末页')").bind('click',function(){queryStaff(jsonStaffInfo,pageModel["totalPage"]);});}if(i==0){$("#infoList").hide();showMsg("TIP","没有相关记录!");}}});}===============================级联================================== //事业部与当前项目关联$(function(){$("#curDep").change(function(){var value = $(this).val();if(value!="0"){$.ajax({type:"POST",dataType:"text",url:'<c:urlvalue="/queryStatistics/general.do?method=queryProject"/>',data:"deptId="+value,cache:false,complete:function(xhr){var projectList =eval("("+xhr.responseText+")");$("#ongoingprojectid").empty();var i = 0;//记录项目数目var allPro = "";//所有项目Idfor(pj in projectList){//添加当前事业部对应的项目i++;allPro = allPro + pj +",";$("#ongoingprojectid").append('<option value="'+ pj +'">'+projectList[pj]+'</option>');}if(i>0){$("#ongoingprojectid").prepend('<optionvalue="'+allPro.substring(0,allPro.length - 1)+'">--请选择--</option>');//选择所有的项目}else{$("#ongoingprojectid").append('<option value="00"style="color:red;">当前没有项目</option>');//没有项目信息}document.getElementById("ongoingprojectid").selectedIndex = "0";$("#ongoingprojectid").change();//拼接json}});}else{$("#ongoingprojectid").empty();$("#ongoingprojectid").append('<optionvalue="0">--请选择--</option>');$("#ongoingprojectid").change();//拼接json}});});。