基于JQuery和DWR实现异步数据传递


Posted in jQuery onOctober 16, 2020

后台我用DWR进行异步数据传递:

代码很简单,就是返回一个数组,如果需求不同可以自己修改:

package org.dwr.re;
/**
 * 测试 返回数组
 * @author 崔素强
 */
public class BackArray {
	public String[] backArr() {
		String[] arr = new String[] { "坚持", "就是", "胜利" };
		return arr;
	}
}

前台记得导入DWR的JS,和JQuery的JS,然后写文本框的输入事件:

<%@ 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">
<html>
 <head>
  <base href="<%=basePath%>" rel="external nofollow" >  
  <title>自动补全</title>
  <script type='text/javascript' src='/buquan/dwr/util.js'></script>
  <script type='text/javascript' src='/buquan/dwr/engine.js'></script>
  <script type='text/javascript' src='/buquan/dwr/interface/arr.js'></script>
	<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
	<script type="text/javascript">		
	var highlightindex = -1; //高亮节点
	var timeOutId;
	$(document).ready(function() {	
	var wordInput = $("#keyText"); //文本框值	
  var wordInputOffset = wordInput.offset(); //文本框属性
	//初始时层隐藏,并设置它的样式,位置
  $("#auto").hide().css("border","1px black solid")
  	.css("position","absolute")
    .css("top",wordInputOffset.top + wordInput.height() + 5 + "px")
    .css("left",wordInputOffset.left + "px")
    .width(wordInput.width() + 5);  
	//文本框事件
	$("#keyText").keyup(function(){
    var myEvent = event || window.event;
    var keyCode = myEvent.keyCode; //取得按键的值
		var autoNode = $("#auto");
		//输入字母等的情况,包括回车,delete
		if (keyCode >= 65 && keyCode <= 90 || keyCode == 8 || keyCode == 46) {
			autoNode.html("");			
			var wordText=$("#keyText").val(); //当前文本框值
			if (wordText != ""){
				//将上一次没有完成的请求清除
				clearTimeout(timeOutId);
				//将请求延迟
				timeOutId = setTimeout(function(){
					//使用DWR返回数据,暂时没有设置参数,返回一个字符串数组即可
					arr.backArr(function back(data){
			  		for(i = 0;i < data.length;i++){	
			  			var newDiv = $("<div>").attr("id",i); // 增加标识		  			  			
			  			newDiv.html(data[i]).appendTo(autoNode); //创建新的节点到原DIV元素
			  			//鼠标移入事件
			  			newDiv.mouseover(function(){
			  				if(highlightindex != -1){
			  					$("#auto").children("div").eq(highlightindex)
			  					.css("background-color","white");
			  				}
			  				//增加一个属性
			  				highlightindex = $(this).attr("id");
			  				//当前设为红色
			  				$(this).css("background-color","red");
			  			});
			  			//鼠标移出事件
			  			newDiv.mouseout(function(){
			  				//当前清除颜色
			  				$(this).css("background-color","white");
			  			});
			  			//鼠标单击事件
			  			newDiv.click(function(){
			  				//取出高亮节点的文本内容
				        var comText = $("#auto").hide().children("div").eq(highlightindex).text();
				        highlightindex = -1;
				        //文本框中的内容变成高亮节点的内容
				        $("#keyText").val(comText);
			  			});
			  		}
			  		if (data.length > 0){		  			
			  			autoNode.show();
			  		}else{
			  			autoNode.hide();
			  		}
			  	});
		  	},500); //延迟处理
	  	} else {	  		
		  	autoNode.hide();
	  	}
	  	highlightindex = -1;
  	} else if (keyCode == 38 || keyCode == 40) {
  		if (keyCode == 38) { //向上        
        var autoNodes = $("#auto").children("div")
        if (highlightindex != -1) {
          //如果原来存在高亮节点,则将背景色改称白色
          autoNodes.eq(highlightindex).css("background-color","white");
          highlightindex--;
        } else {
          highlightindex = autoNodes.length - 1;  
        }
        if (highlightindex == -1) {
          //如果修改索引值以后index变成-1,则将索引值指向最后一个元素
          highlightindex = autoNodes.length - 1;
        }
        //让现在高亮的内容变成红色
        autoNodes.eq(highlightindex).css("background-color","red");
      }
  		if (keyCode == 40) { //向下        
        var autoNodes = $("#auto").children("div")
        if (highlightindex != -1) {
          //如果原来存在高亮节点,则将背景色改称白色
          autoNodes.eq(highlightindex).css("background-color","white");
        }
        highlightindex++;
        if (highlightindex == autoNodes.length) {
          //如果修改索引值以后index变成-1,则将索引值指向最后一个元素
          highlightindex = 0;
        }
        //让现在高亮的内容变成红色
        autoNodes.eq(highlightindex).css("background-color","red");
      }
  	} else if (keyCode == 13) {
  		 //下拉框有高亮内容
      if (highlightindex != -1) {
        //取出高亮节点的文本内容
        var comText = $("#auto").hide().children("div").eq(highlightindex).text();
        highlightindex = -1;
        //文本框中的内容变成高亮节点的内容
        $("#keyText").val(comText);
      } else {
        //下拉框没有高亮内容
        alert("文本框中的[" + $("#keyText").val() + "]被提交了");
      }
  	}
	});
	});
	</script>	
 </head> 
 <body>
  <input type="text" id="keyText" name="keyText" width="50px" />
  <div id="auto" align="left"></div>
 </body>
</html>

当你输入时,会去后台查询并显示一些数据,你可以使用上下键来操作,回车时自动提交数据!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery Tree Multiselect使用详解
May 02 jQuery
jQuery中的deferred对象和extend方法详解
May 08 jQuery
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
May 26 jQuery
jquery实现左右轮播图效果
Sep 28 jQuery
Django中使用jquery的ajax进行数据交互的实例代码
Oct 15 jQuery
jQuery实现点击下拉框中的值累加到文本框中的方法示例
Oct 28 jQuery
利用jquery如何从json中读取数据追加到html中
Dec 01 jQuery
jQuery滚动条美化插件nicescroll简单用法示例
Apr 18 jQuery
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
基于jQuery实现可编辑的表格
Dec 11 jQuery
jQuery实现简单全选框
Sep 13 jQuery
jquery简易手风琴插件的封装
Oct 13 #jQuery
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
Oct 09 #jQuery
jQuery实现二级导航菜单的示例
Sep 30 #jQuery
JQuery Ajax如何实现注册检测用户名
Sep 25 #jQuery
jQuery实现带进度条的轮播图
Sep 13 #jQuery
jQuery实现鼠标拖拽登录框移动效果
Sep 13 #jQuery
jQuery实现简单全选框
Sep 13 #jQuery
You might like
PHP的开合式多级菜单程序
2006/10/09 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
php微信浏览器分享设置以及回调详解
2016/08/01 PHP
PHP中cookie知识点学习
2018/05/06 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
php curl发送请求实例方法
2019/08/01 PHP
Js中sort()方法的用法
2006/11/04 Javascript
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
2010/11/25 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
vue移动端实现下拉刷新
2018/04/22 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
vue 组件简介
2020/07/31 Javascript
Python NumPy库安装使用笔记
2015/05/18 Python
Tornado高并发处理方法实例代码
2018/01/15 Python
Python使用OpenCV进行标定
2018/05/08 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
Python实现的文轩网爬虫完整示例
2019/05/16 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
CSS3教程(8):CSS3透明度指南
2009/04/02 HTML / CSS
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
高一数学教学反思
2014/02/07 职场文书
授权委托书格式范文
2014/08/02 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
安全检查汇报材料
2014/12/26 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书