一.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. 前端笔记之jQuery(上)加载函数的区别&对象&操作HTML/CSS&动画&选择器

    一.jQuery简介 1.0 JavaScript编程比较恶心的地方 恶心1:选择元素麻烦,全线兼容的方法只有getElementById()和getElementsByTagName()两个.其他的 ...

  2. leetcode — convert-sorted-list-to-binary-search-tree

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

  3. 设计模式总结篇系列:桥接模式(Bridge)

    在实际类设计过程中,有时会遇到此类情况:由于实际的需要,某个类具有两个或两个以上的维度变化,如果利用继承将每种可能的变化情况都定义成一个类,一是会导致类膨胀的问题,二是以后不太好维护和并且违背类的设计 ...

  4. C++STL模板库序列容器之vector

    目录 STL之Vecter 一丶STL简介 二丶Vector用法 1.vector容器的使用 2.vector迭代器. 3.vector中的方法. 三丶常用算法 1.常见算法中的算法方法. 2.sor ...

  5. [React] react+redux+router+webpack+antd环境搭建一版

    好久之前搭建的一个react执行环境,受历史影响是webpack3.10.0和webpack-dev-server2.7.1的环境,新项目准备用webpack4重新弄弄了,旧的记录就合并发布了(在没有 ...

  6. 第11章 使用OpenID Connect添加用户身份验证 - Identity Server 4 中文文档(v1.0.0)

    在本快速入门中,我们希望通过OpenID Connect协议向我们的IdentityServer添加对交互式用户身份验证的支持. 一旦到位,我们将创建一个将使用IdentityServer进行身份验证 ...

  7. C#/VB.NET 给Word文档添加/撤销书签

    在现代办公环境中,阅读或者编辑较长篇幅的Word文档时,想要在文档中某一处或者几处留下标记,方便日后查找.修改时,需要在相对应的文档位置插入书签.那对于开发者而言,在C#或者VB.NET语言环境中,如 ...

  8. Java消息中间件----ActiveMQ入门①

    一 首先到ActiveMQ下载安装包 Active官网地址http://activemq.apache.org/activemq-5150-release.html 如图所示,有两个下载的链接,我们下 ...

  9. Java学习笔记之——多线程

    多线程编程 程序: 进程:一个程序运行就会产生一个进程 线程:进程的执行流程,一个进程至少有一个线程,称为主线程 如:QQ聊着天,同时在听音乐 一个进程可以有多个线程,多个线程共享同一个进程的资源 线 ...

  10. Linux下Jenkins服务器搭建

    系统环境 操作系统:CentOS6.9 java jdk:java 8 Jenkins版本:jenkins-2.78-1.1.noarch.rpm 关闭防火墙 注意:如果是基于msbuild构建.ne ...