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 相关文章推荐
jQuery选择没有colspan属性的td的代码
Jul 06 Javascript
Jquery ThickBox插件使用心得(不建议使用)
Sep 08 Javascript
jQuery scrollFix滚动定位插件
Apr 01 Javascript
javascript实现图片上传前台页面
Aug 18 Javascript
jQuery版本升级踩坑大全
Jan 12 Javascript
JavaScript实现多种排序算法
Feb 24 Javascript
js 动态生成json对象、时时更新json对象的方法
Dec 02 Javascript
mint-ui在vue中的使用示例
Apr 05 Javascript
深入Vue-Router路由嵌套理解
Aug 13 Javascript
Vue列表渲染的示例代码
Nov 01 Javascript
移动端手指操控左右滑动的菜单
Sep 08 Javascript
NProgress显示顶部进度条效果及使用详解
Sep 21 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
php字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
解析php5配置使用pdo
2013/07/03 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
2018/08/20 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
jQuery插件 selectToSelect使用方法
2013/10/02 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
Bootstrap源码解读网格系统(3)
2016/12/22 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
Python中%r和%s的详解及区别
2017/03/16 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
Python数据分析matplotlib设置多个子图的间距方法
2018/08/03 Python
Python切图九宫格的实现方法
2019/10/10 Python
Pycharm修改python路径过程图解
2020/05/22 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
2020/08/24 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
古驰英国官网:GUCCI英国
2020/03/07 全球购物
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
违纪检讨书范文
2015/01/27 职场文书
个人总结格式范文
2015/03/09 职场文书
婚宴主持词
2015/06/30 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书