想要实现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文件,如下:
而jsp页面只需要一个文本框、一个普通按钮和一个空白div层即可,该div用于显示服务器端返回的处理结果;按钮的单击事件触发verify()方法。如下:
用户名:
注意:ajax方式下不需要使用表单来进行数据提交,因此页面中不用写标签。
接下来,创建一个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文件
分别在前台aspx页面和后台ashx页面中输入如上代码,就实现了一个超级简单的ajax登录,很简单吧?
