Ajax的简单实现:
①.Demo-1:以简单数据段的形式返回给前台页面:
页面代码:index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="js/verify.js"></script>
<script type="text/javascript" src="js/jquery-1.4.2.js"></script>
<script type="text/javascript">
</script>
<title>用户名验证</title>
</head>
<body>
用户名校验ajax实例,请输入用户名:<br/>
<!--
<form action="AjaxServer" method="post">
用户名:<input type="text" name="name"/>
<input type="submit" value="检验"/>
</form>
-->
<!--ajax可以不需要使用表单来进行数据提交,因此不用写表单标签 -->
<!--ajax方式不需要name属性,需要一个id的属性-->
用户名:<input type="text" id="userName"/>
<input type="button" value="检验一下" onclick="verify()"/>
<!--这个div用于存放服务器端返回的信息开始为空,id属性利用dom的方式找到某个节点-->
<div id="result"></div>
</body>
</html>
后台servlet代码:
1. AjaxServer---以out.println()的形式往前台输出数据段,并不是刷新页面
Import…
/**
* Created by IntelliJ IDEA.
* User: 赵光鹏
* Date: 2011-11-16
* Time: 15:35:55
* Alt+enter 导入包修复的功能
* To change this template use File | Settings | File Templates.
*/
public class AjaxServer extends HttpServlet{
@Override
protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
//解决乱码问题,一定要在获取getWriter对象之前
httpServletResponse.setCharacterEncoding("utf-8");
httpServletResponse.setContentType("text/html;charset-utf-8");
PrintWriter out = httpServletResponse.getWriter();
//1.取页面端传过来的页面信息
String old = httpServletRequest.getParameter("name"); //name是从js中定义的url中参数获取的
// String name = new String(old.getBytes("iso8859-1"),"utf-8");
String name = URLDecoder.decode(old,"UTF-8");
System.out.println("转换编码前"+old);
System.out.println("转换编码前"+old);
//2.检查参数是否有问题
if(name==null||name.length()==0){
out.println("用户名不能为空");
}else{
//3. 校验操作
if(name.equals("guangpeng")){
//4 .和传统应用不同,这一步是将用户感兴趣的数据返回给页面段,而不是将新的页面传递给用户
out.println("欢迎您"+name+"!");
} else{
out.println(name+"--11用户尚未注册,请先注册!");
}
}
}
@Override
protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
doGet(httpServletRequest, httpServletResponse);
}
}
Js文件代码:
①. 利用Jquery简单实现ajax与后台服务器的交互:
//定义用户名校验的方法
function verify(){
// var url = "AjaxServer?name="+encodeURI(encodeURI($("#userName").val()));
/*
* jquery链式编程
* var userName = $("#userName").val();
* */
//jquery返回都是jquery对象,可以继续在上面执行其他的方法
var jqueryObj = $("#userName");
//获取节点的值
var userName = jqueryObj.val();
// alert(userName);
//2.将文本框中的数据发送给服务器段的servlet
//使用jquery的XMLHTTPrequest对象请求的封装
$.get("AjaxServer?name="+userName,null,callback);
//
}
//回调函数,是数据异步交互的一个体现
function callback(data){
//3. 接收服务器端返回的数据
// alert("服务器的数据回来了!!!");
//alert(data);
$("#result").html(data);
//4.将服务器返回的数据动态的显示在网页上面
}
Demo1可以实现数据以字符串的形式与服务器进行数据交互,其实js文件也去掉注释,利用jquery链式编程的思想,也可以简单的写为:verity1.js
function verify(){
var userName = $("#userName").val();
$.get("AjaxServer?name="+userName,null,function(data){
$("#result").html(data);
});
}
Demo2:使用XmlHttpRequest对象进行ajax异步数据交互
使用XmlHttpRequest对象进行ajax异步数据交互:html页面和servlet是相同的,只是在页面中更新引入的js文件就可以:
//这个方法将使用XmlHttpRequest对象进行ajax异步数据交互
var xmlhttp;
function verify(){
//var xmlhttp;
//使用dom的方式获取文本框中的值
var userName = document.getElementById("userName").value;
if(window.XMLHttpRequest){
//针对firefox,mozillor opera safari ie7.8
xmlhttp = new XMLHttpRequest();
//修正某些浏览器bug的代码,能正确的返回xml格式的数据
if(xmlhttp.overrideMimeType){
xmlhttp. overrideMimeType("text/xml");
}
}else if(window.ActiveXObject){
//针对ie6,5
//两个可以用于创建XMLHttpRequest对象的控件名称,保存在一个js中
//排在前面的版本较新 ,控件版本不一样,要尝试性的去创建
var activeNeme = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i=0; i<activeNeme.length; i++){
try{
xmlhttp = new ActiveXObject(activeNeme[i]);
break;
}catch(e){
}
}
}
if(!xmlhttp){
alert("XMLHttpRequest对象创建失败");
}else{
alert(xmlhttp);
}
//2.回调函数的注册
//只是需要函数名,不要加括号,如果加上括号,会把函数的返回值注册上
xmlhttp.onreadystatechange = callback;//这里写的是函数名
//3.设置连接信息 Get方式实现
//第一个参数表示http的请求方式,支持所有的http的请求方式,主要使用get和post
//第二个参数表示请求的url地址,get参数也在url中
//第三个参数表示采用异步还是同步方式交互,true表示异步
// xmlhttp.open("GET","AjaxServer?name="+userName, true);
//4.发送数据,开始和服务器进行交互
// 同步方式下,send这句话会在服务器端数据回来后才执行
//异步方式下,send这句话会立即完成执行
//xmlhttp.send(null);
//post方式请求的的代码
xmlhttp.open("POST","AjaxServer", true);
//自己设置http请求头
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//post方式发送数据
xmlhttp.send("name="+userName);
}
//回调函数
function callback(){
//5.接收响应数据
//判断对象的状态是交互完成 4表示交互完成 ,XMLHttpRequest共有五种状态0-4
if(xmlhttp.readyState == 4){
//判断http的交互是否成功
if(xmlhttp.status == 200){
//获取服务器端返回的数据
//获取服务器端输出的纯文本数据
var responseText = xmlhttp.responseText;
//将数据显示在页面上
var divNode = document.getElementById("result");
divNode.innerHTML = responseText;
}
}
}
从js的角度来了解ajax数据交互原理。
分享到:
相关推荐
云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习笔记网站-...
云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习笔记网站-...
NULL 博文链接:https://persistc.iteye.com/blog/264072
jQuery-ajax-用户名异步请求,转载请注明出处:https://blog.csdn.net/qq_40374604(如有需要欢迎留言,我一定会尽快解答)
今天小编就为大家分享一篇layui-tree实现Ajax异步请求后动态添加节点的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
ajax 学习笔记源代码ajax 学习笔记源代码ajax 学习笔记源代码ajax 学习笔记源代码ajax 学习笔记源代码ajax 学习笔记源代码ajax 学习笔记源代码ajax 学习笔记源代码ajax 学习笔记源代码ajax 学习笔记源代码ajax 学习...
数据是使用AJAX向易语言程序请求交互取到的。虽然wke浏览器也可以交互数据,但个人感觉还是Ajax顺手。像做Web应用系统一样做易语言程序,是一种什么样的feel?。用html写窗口UI,然后用Ajax交互数据。把web应用搬到...
下面小编就为大家带来一篇Ajax学习笔记---3种Ajax的实现方法【推荐】。小编觉得挺不错的,现在分享给大家,也给大家做个参考
掌握 Ajax第 2 部分-使用 JavaScript 和 Ajax 发出异步请求 掌握 Ajax第 3 部分-Ajax 中的高级请求和响应 掌握 Ajax第 4 部分-利用 DOM 进行 Web 响应 掌握 Ajax第 5 部分-操纵 DOM 掌握 Ajax第 6 部分-建立基于 DOM...
Ajax-magento2-catalog-infinite-scroll.zip,免费的Magento 2扩展,为目录添加无限滚动功能(通过AJAX实现)编码教程,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。...
JavaEE5学习笔记12-JSF集成AJAX使用经验总结。