一.ajax是什么?
是网页中的异步刷新技术。其核心是js+xml
二.执行过程
1.js的核心对象XMLHttpRequest是一个具备像后台发送请求的一个对象
2.XMLHttpRequest可以异步发送请求
3.指定回调函数
4.等待后台响应,这个过程是异步的。此时网页中的其他元素是处于可用状态
5.响应得到后会执行回调函数来局部刷新网页
三。好处:
1.用户体验感增强
2.不用等待操作结果
3.提高带宽的使用率

四。Json数据的使用
1.json是一种纯字符串的数据格式,可以用来描述复杂的对象或数组
2.使用场景:可以将java对象和json格式的数据互相装换
3.使用步骤,在项目中要加入json转换的jar包

实例:验证用户名重复+省市区下拉列表联动

  checkUsername.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/jquery-3.2.1.js"></script>
<title>Insert title here</title>
</head>
<script type="text/javascript">
var xmlhttp;//全局变量
function checkName(value){
//1.要获取XMLHttpRequest对象
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//指定回调函数
xmlhttp.onreadystatechange=reback;//回调函数是专门处理后台响应后的数据变化
//打开连接 指定提交方式,指定url地址 指定是否异步(true为异步 false同步)
//js中向后台传中文参数需要转码encodeURI('张三')
xmlhttp.open("post","ajaxCheckName?name="+encodeURI(value),true);
//设置传参方式为表单提交
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//发送请求
xmlhttp.send();
} function reback(){
//判断各种响应状态
if (xmlhttp.readyState==4 && xmlhttp.status==200){
//获取后台响应过来的数据,只能接收字符串
if(xmlhttp.responseText=='true'){//用户名重复
document.getElementById('mess_name').style.color="red";
document.getElementById('mess_name').innerHTML="用户名重复";
}else{
document.getElementById('mess_name').style.color="green";
document.getElementById('mess_name').innerHTML="用户可用";
}
}
} //Jquery的方式来做ajax,效果同上
$("document").ready(function (){
$("#username").bind("blur",function(){
$.post("ajaxCheckName?name="+this.value,function(data){
if(data=="true"){
$("#mess_name").css("color","red");
$("#mess_name").html("用户名重复");
}else{
$("#mess_name").css("color","green");
$("#mess_name").html("用户名可用");
}
});
});
}); $("document").ready(function (){
$.post("address?type=province",function(data){
var str = "";
console.log(data);
$.each(JSON.parse(data),function(i,address){
console.log(i,address.id,address.name,address.type);
str += "<option value='"+address.id+"'>"+address.name+"</option>";
});
$("#pro").html(str);
}); $("#pro").bind("change",function(){
$.post("address?type=city&proid="+this.value,function(data){
var str = "";
console.log(data);
$.each(JSON.parse(data),function(i,address){
console.log(i,address.id,address.name,address.type);
str += "<option value='"+address.id+"'>"+address.name+"</option>";
});
$("#city").html(str);
});
}); $("#city").bind("change",function(){
$.post("address?type=area&cityid="+this.value,function(data){
var str = "";
console.log(data);
$.each(JSON.parse(data),function(i,address){
console.log(i,address.id,address.name,address.type);
str += "<option value='"+address.id+"'>"+address.name+"</option>";
});
$("#area").html(str);
});
});
});
</script>
<body>
<button onclick="checkName()">测试</button> <div id="myDiv"></div>
<input name="" onblur="checkName(this.value)">
<span id="err" style="color: red;"></span> <br>
<input> <div align="center">
<form action="">
用户名:<input id="username"><span id="mess_name"></span><br>
密码:<input><br>
地址:<select id="pro">
<option>请选择省份</option>
</select>
<select id="city">
<option>请选择城市</option>
</select>
<select id="area">
<option>请选择地区</option>
</select>
</form>
</div>
</body>
</html>
AjaxCheckNameServlet.java
package com.control;

import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ajaxCheckName")
public class AjaxCheckNameServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name"); PrintWriter out = resp.getWriter();//获取输出流
if("海文".equals(name)){//用户名重复
out.print("true");
}else{
out.print("false");
}
out.flush();
out.close();
}
}
AddressServlet.java
package com.control;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.pojo.Address;
import com.service.AddressService;
import com.service.IAddressService; import net.sf.json.JSONArray;
@WebServlet("/address")
public class AddressServlet extends HttpServlet{
IAddressService addSer = new AddressService();
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String type = req.getParameter("type");
List<Address> list = null;
if("province".equals(type)){//获取省份数据
list = addSer.getAllProvince();
} if("city".equals(type)){//获取城市
String proid = req.getParameter("proid");
list = addSer.getChildByParentid(proid);
} if("area".equals(type)){//获取地区
String cityid = req.getParameter("cityid");
list = addSer.getChildByParentid(cityid);
}
//将java对象转换成json数据
JSONArray json = JSONArray.fromObject(list); //将json响应给前台
resp.setCharacterEncoding("UTF-8");//解决响应的中文乱码问题
PrintWriter out = resp.getWriter();
out.print(json.toString());
out.flush();
out.close();
}
}

10-ajax技术简介的更多相关文章

  1. AJAX技术简介

    AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 您应当具备的基础知识 在继续学习之前,您需要对下面的知识有基本的了解: HTML / XHTML CSS JavaScript ...

  2. SpringMVC: Ajax技术

    SpringMVC:Ajax技术 简介 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 是一种在无需重新加载整个网 ...

  3. 掌握 Ajax,第 1 部分: Ajax 入门简介

    转:http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro1.html 掌握 Ajax,第 1 部分: Ajax 入门简介 理解 Ajax 及其工作 ...

  4. 10 ajax

    Ajax准备知识:json 什么是json? 定义: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w ...

  5. Json介绍与Ajax技术

    AJAX   AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据 ...

  6. Ajax技术

    1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...

  7. AJAX(一)AJAX的简介和基础

    本节简介(异步链接服务器对象)XMLHTTPRequest以及AJAX的简介. AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML). AJ ...

  8. Java之Ajax技术

    ajax(asynchronouse javascript and xml) 异步的javascript 和 xml(现在常把xml换成json): ajax是2005年提出的,在2006,2007年 ...

  9. Java Servlet 技术简介

    Java Servlet 技术简介 Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么 ...

  10. 你真正的了解Ajax?Ajax技术简述

    Ajax技术是目前在浏览器中通过JavaScript脚本可以使用的所有技术的集合.Ajax并没有创造出某种具体的新技术,它所使用的大多数技术都是在很多年以前就已经存在了,然而Ajax以一种崭新的方式来 ...

随机推荐

  1. leetcode — construct-binary-tree-from-inorder-and-postorder-traversal

    import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Source : https://o ...

  2. log4j2 使用纪要

    简介 Apache Log4j 2 是Log4j 的升级版,在该版本实现中,日志的处理流程及效率有了显著提升. 此外新版本也合入了一些logback日志框架体系的一些改进点. 关键特性 API分离,接 ...

  3. SpringCloud应对高并发的思路

    一.Eureka的高可用性 Eureka下面的服务实例默认每隔30秒会发送一个HTTP心跳给Eureka,来告诉Eureka服务还活着,每个服务实例每隔30秒也会通过HTTP请求向Eureka获取服务 ...

  4. 巨杉数据库加入CNCF云原生应用计算基金会,共建开源技术生态

    近日,巨杉数据库正式加入全球顶级开源社区,云原生应用计算基金会 (Cloud Native Computing Foundation,以下简称CNCF),成为CNCF基金会会员,是中国最早加入的开源云 ...

  5. 第17章 社区快速入门和模板 - Identity Server 4 中文文档(v1.0.0)

    IdentityServer组织不维护这些示例.IdentityServer组织愉快地链接到社区模板,但不能对模板做出任何保证.请直接与作者联系. 17.1 各种ASP.NET核心安全样本 https ...

  6. Java与.net的选择和比较

    跨平台对开发商是一个巨大的诱惑.一次开发,多个平台使用,降低了迁移成本,有利.但Java的开发工具没有.net顺手,对编码人员的要求比.net要高. .net培训成本低,上手快.尤其如果开发人员以前都 ...

  7. 【转】Android 开发规范(完结版)

    摘要 1 前言 2 AS 规范 3 命名规范 4 代码样式规范 5 资源文件规范 6 版本统一规范 7 第三方库规范 8 注释规范 9 测试规范 10 其他的一些规范 1 前言 为了有利于项目维护.增 ...

  8. Java基础:一个100%会发生死锁的程序

        多线程是Java工程师进阶所必须掌握的一项技能,也是面试中绕不过的一个环节,而死锁又是多线程同步失败的经典案例,对于复杂的系统,死锁是很难通过代码层面来做静态检测和排查的,所以有的面试官会从反 ...

  9. C# 利用反射动态加载dll

    笔者遇到的一个问题,dll文件在客户端可以加载成功,在web端引用程序报错.解决方法:利用反射动态加载dll 头部引用加: using System.Reflection; 主要代码: Assembl ...

  10. excel 函数1

    1 函数的相对引用和绝对引用 1.1绝对引用,相对引用和混合引用 按住F4键可以相互切换 1.2 if and or函数 案例图片 =IF(C7>30000,"大商家",&q ...