jQuery+Ajax实现无刷新操作


Posted in Javascript onJanuary 04, 2016

使用jQuery实现Ajax操作
       想要实现Ajax页面无刷新效果,但是直接利用Ajax代码实在有些麻烦,所以就想用jQuery实现。jQuery很好的封装了Ajax的核心对象XMLHTTPRequest。所以用起来非常方便。
       首先,创建服务器端代码,这里用Servlet实现服务器端的数据处理;代码如下:

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  throws ServletException, IOException {
 // 设置编码格式
  resp.setContentType("text/html;charset=UTF-8");
 // 创建输出对象
 PrintWriter out = resp.getWriter();
 
 // 得到请求参数
 String name = req.getParameter("uname");
 // 判断
 if (name == null || name.length() == 0)
 {
  out.println("用户名不能为空!");
 }
 else
 {
  // 判断
  if (name.equals("cheng"))
  {
  out.println("用户名["+ name +"]已存在!请使用其他用户名!");
  }
  else
  {
  out.println("用户名[" + name + "]尚未存在!您可以注册!");
  }
 }
}

然后,创建JSP页面,要使用jQuery,必须在页面之中引入jQuery库,也就是一个Javascript文件,另外还需引入自定义的Javascript文件,如下:

<!-- 引入Javascript文件 -->
 <script type="text/javascript" src="js/jquery-1.2.6.js"></script>
<script type="text/javascript" src="js/verify.js"></script>

而JSP页面只需要一个文本框、一个普通按钮和一个空白DIV层即可,该DIV用于显示服务器端返回的处理结果;按钮的单击事件触发verify()方法。如下:

<body>
 <center>
  用户名:<input type="text" id="uname" name="uname" />
 <br />
 <input type="button" name="btnVerify" value="验证" onclick="verify()" />
 <br />
 <div id="result">
 
 </div>
 </center>
 </body>

注意:Ajax方式下不需要使用表单来进行数据提交,因此页面中不用写<form>标签。
    接下来,创建一个verify.js文件,在该文件中创建verify()方法,用来实现Ajax的无刷新效果,这是该示例中最为重要的一步。想要使用jQuery实现Ajax分为以下四步:

  •     · 获取文本框中的内容;
  •     · 将文本框中的内容发送给服务器端的Servlet;
  •     · 接收服务器端返回的数据;
  •     · 将服务器端返回的数据动态地显示在JSP页面上。

针对于第一步,首先通过jQuery获得对象,并取得对象的值,如下:

// 取得文本框对象,通过$()获取的所有对象都是jQuery对象
 var jQueryObject = $("#uname");
 // 获取文本框中的值
 var userName = jQueryObject.val();

    通过jQuery中的$()函数获得页面的节点,该函数得到的是一个jQuery对象,然后通过jQuery中的val()方法取得节点的值,也就是文本框中的内容。
针对于第二步,我们使用jQuery的get()方法来发送数据到服务器端,如下:
    $.get("TestServlet?uname=" + userName,null,callback);
    该方法返回一个XMLHttpRequest对象,该方法提供三个参数,第一个是请求的服务器端的URL,第二个参数是待发送的参数,一般可以在第一个URL中直接带上参数,所以一般该参数为null,第三个参数是服务器端成功处理完成数据之后的一个回调函数。
针对于第三步,就应该创建一个回调函数,用来处理服务器端返回的数据,如下:  

// 回调函数
 function callback(data)
 {
 
 }
 该回调函数有一个参数,该参数就是客户端返回的数据。
 针对于第四步,再次利用jQueyr的选择器函数得到DIV层,将返回的数据显示在该层之上,如下:
 function callback(data)
 {
 /**
 * 第三步,接收服务器端返回的数据
 */
 // 将服务器端返回的数据动态的显示在页面上
 var resultObject = $("#result");
 resultObject.html(data);
 }

利用jQuery的html()方法将数据动态地显示到DIV层之中。
现在我们对以上的代码进行优化,我们用两句代码就可以实现以上所有代码的功能,这就是jQuery的强大之处之一。在verify.js文件之中的verify()方法也可以写成下面的形式:

$.get("TestServlet?uname=" +$("#uname").val(),null,function(data){
 $("#result").html(data);
})

再为大家分享一个,下面是“无刷新登录”的例子,采用Ashx+jQuery Ajax实现。
1、后台实例代码 ashx文件(可替换为从数据库中读取) 

public void ProcessRequest(HttpContext context) 
{ 
 context.Response.ContentType = "text/plain"; 
 //context.Response.Write("Hello World"); 
 
 string name = context.Request.Params["name"].ToString().Trim(); 
 if ("china".Equals(name)) 
 { 
 context.Response.Write("1");//1标志login success 
 } 
 else 
 { 
 context.Response.Write("0");//0标志login fail 
 } 
}

2、前台实例代码 aspx文件 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
 <title></title> 
 
 <script src="js/jquery-1.4.2.js" type="text/javascript"></script> 
 
 <script type="text/javascript"> 
 $(function() { 
  $("#test").live("click", function() { 
  //alert(0); 
  $.ajax({ 
   type: 'POST', 
   url: 'Handler1.ashx', 
   data: { "name": $("#name").val() }, 
   success: function(data) { 
   if (1 == data) 
    alert('login success'); 
   else 
    alert('login fail'); 
   } 
  }); 
  }); 
 }); 
 </script> 
 
</head> 
<body> 
 <form id="form1" runat="server"> 
 <div> 
 <input type="text" name="name" id="name" /> 
 <input type="button" name="test" id="test" value="validate" /> 
 </div> 
 </form> 
</body> 
</html>

分别在前台aspx页面和后台ashx页面中输入如上代码,就实现了一个超级简单的Ajax登录,很简单吧?

Javascript 相关文章推荐
JS遮罩层效果 兼容ie firefox jQuery遮罩层
Jul 26 Javascript
Javascript操作cookie的函数代码
Oct 03 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
Feb 01 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
May 11 Javascript
让js弹出窗口居前显示的实现方法
Jul 10 Javascript
jQuery判断数组是否包含了指定的元素
Mar 10 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
Jun 04 Javascript
分析js闭包引起的事件注册问题
Mar 29 Javascript
javascript中错误使用var造成undefined
Mar 31 Javascript
基于jquery实现轮播焦点图插件
Mar 31 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
Nov 02 Javascript
微信小程序实现左右列表联动
May 19 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
Jan 04 #Javascript
javascript从定义到执行 你不知道的那些事
Jan 04 #Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
Jan 04 #Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
Jan 04 #Javascript
深入探究AngularJS框架中Scope对象的超级教程
Jan 04 #Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
Jan 04 #Javascript
详解AngularJS中的filter过滤器用法
Jan 04 #Javascript
You might like
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
PHP上传图片、删除图片简单实例
2016/11/12 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
转义字符(\)对JavaScript中JSON.parse的影响概述
2013/07/17 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
Angular.js如何从PHP读取后台数据
2016/03/24 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
详谈for循环里面的break和continue语句
2017/07/20 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
JavaScript剩余操作符Rest Operator详解
2019/07/20 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
Python实现多线程抓取妹子图
2015/08/08 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
2017/11/08 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
六行python代码的爱心曲线详解
2019/05/17 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
公司员工的自我评价范例
2013/11/01 职场文书
大学毕业感言一句话
2014/02/06 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书
应届大学生求职信
2014/07/20 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
党支部培养考察意见
2015/06/02 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
Java中的随机数Random
2022/03/17 Java/Android
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL