Ajax通信

第一章 Ajax基本概念

1.概念

ajax不是一项新的技术,是在web请求响应基础上的优化

他是由前端的javascript+html+css+xml构成

核心操作,可以进行异步功能实现【asynchronous】

所谓异步:通俗来说,以做饭为例,在蒸煮米饭的同时,可以进行炒菜的操作,最终同时完成两个内容;程序中,就是在一次请求响应操作过程中,页面可以进行其他功能的操作,无需等待其完成后再进行。

2.Web的发展历程

Web大体发展分为三个阶段

Web1.0时代:上世纪90年代出现,只读时代,服务器厂商【新浪、网易、搜狐等】提供静态网页供用户查看,网络人群相对较少,无法进行交互,用户体验度较差

Web2.0时代:2000以后到现今,主打“交互”,用户在提供的服务器【Facebook,QQ,微博】上发表自己的内容,用户群体量大,体验更强

Web3.0时代:10年后至今,主打数据的"去中心化",主要以各种APP应用为主

2.0时代中的一个核心技术就是Ajax



第二章 原生Ajax

1.传统Web和Ajax区别

差异方式说明
请求方式不同传统发送的是同步请求
Ajax可发送同步、异步请求
响应方式不同传统响应完整页面
Ajax响应所需数据
客户端处理方式不同传统响应加载所有功能后才能进行操作
Ajax动态更新页面局部内容,不影响其他操作

2.Ajax核心对象

XMLHttpRequest对象,即使Ajax核心引擎对象,通过它的一些列属性,方法,事件来完成Ajax的所有功能

属性

**1 readyState:**Ajax引擎对象的状态值,由0-4共5个状态构成

状态值状态说明
0正在初始化
1正在发送请求
2请求发送完毕
3正在接收响应结果
4响应结果接受完毕

**2 status:**HTTP的状态码,由200,300,400,500等系列构成,常规值如下

状态值状态说明
200正常
404资源未找到
500程序内部错误,如越界,空指针,类型转换等

**3 responseText:**响应的文本内容,由后端程序的out.print方法进行传递

方法

**1 open:**用来创建HTTP请求对象,携带参数

type:提交数据的类型方式【post、get】

url:请求的资源路径

async:是否同异步【true为异步,false为同步】

**2 send:**发送请求到服务器,可以携带请求文本数据,如果不携带,直接在url进行拼接,需要赋值null

**3 setRequestHeader:**如果是post提交,并且请求的数据在send方法中传递提交的话,需要进行该方法的设定,否则服务器接收不到相关数据

xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");

事件

**1 onreadystatechange:**引擎对象状态从0-4进行变化的时候都会触发该事件,通常给这个事件赋值一个回调函数,在函数中进行数据的响应处理

3.Ajax查重的核心代码

//判断非空
function checks() {
    var name = document.getElementById("name").value;
    if(name == ""){
        document.getElementById("msg").innerHTML = "用户名不能为空!";
        return false;
    }
    //调用方法
    doAjax(name);
}
//定义ajax引擎对象
var xhr;
//定义ajax执行函数
function doAjax(name){
    //实例化xhr
    if(window.XMLHttpRequest){
        //IE7及以上和其他浏览器
        xhr = new XMLHttpRequest();
    }else{
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    //判断
    if(xhr == null){
        alert("ajax创建失败!");
    }else{
        //创建请求[post提交]
        xhr.open("post", "AjaxServlet", true);
        //设置请求头
        xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
        //发送请求
        xhr.send("name="+name); 
        //事件触发,回调函数
        xhr.onreadystatechange = doBack; 
    }
}
//doBack回调函数
function doBack() {
    //判断正确的响应节点
    if(xhr.readyState == 4 && xhr.status == 200){
        //获取响应结果
        var result = xhr.responseText;
        //显示结果
        document.getElementById("msg").innerHTML = result;
    }
}



第三章 JQuery-Ajax

1.使用缘由

1 原生ajax操作步骤繁琐

2 需要记忆的方法,属性,事件众多

3 复杂数据处理相对困难

4 浏览器的兼容性也有相应要求

而JQuery是一种Javascript的封装函数库,可以更便捷的完成页面动效【包括异步刷新等】

2.常用方法

$.ajax

$.ajax( {
     "url":"url",         // 要提交的URL路径
     "type":"get",        // 发送请求的方式,默认get
     "data":data,         // 要发送到服务器的数据,可以是字符串,也可以是json
     "dataType":"text",   // 指定传输的数据格式,默认文本
     "success":function(result) { 
         // 请求成功后要执行的代码
	 }
});

$.get

$.get(url,data,function(data){},"格式,默认text");
第一个参数url:提交的URL路径
第二个参数data:发送到服务器的数据(“op=login”)({“op”:"login"})这两种格式最常用
第三个参数:回调函数
第四个参数:响应格式

$.post

$.post(url,data,function(data){},"格式,默认text");
第一个参数url:提交的URL路径
第二个参数data:发送到服务器的数据(“op=login”)({“op”:"login"})这两种格式最常用
第三个参数:回调函数
第四个参数:响应格式

$.getJSON

$.getJSON(url,data,function(data){});
第一个参数url:提交的URL路径
第二个参数data:发送到服务器的数据(“op=login”)({“op”:"login"})这两种格式最常用
第三个参数:回调函数

3.同步处理

在操作一些功能的时候,我们可能需要把默认异步设置为同步,主要有以下两种方式

1 在$.ajax函数中,使用属性

async:false

2 直接在JQ中使用全局属性设置

$.ajaxSettings.async=false



第四章 JSON

由于在很多场景下,页面需要Ajax响应数据的类型,数据量等都有很高的要求,纯粹的文本或者xml响应不大能满足页面所需,所以我们可以使用JSON进行响应优化

1.JSON基本概念

JavaScript Object Notation是JSON的全称

是一种轻量级的数据交换格式

采用独立于语言的文本格式

通常用于在客户端和服务器之间传递数据

2.常用JSON数据类型

对象类型

var stu = {
			"id" : 1,
			"name" : "张三",
			"sex" : "男"
		};
//使用{}进行定义,key:value形式进行属性赋值
//通过对象.属性进行取值

数组类型

var arr = [ "红", "黄", "蓝" ];
//使用[]进行定义
//通过for,或者jq的each函数进行遍历
for (var i = 0; i < arr.length; i++) {
   var r = arr[i]
}
$.each(arr, function(i, n) {
   	//i:遍历的下标
    //n:遍历的数据
});

对象数组类型(集合)

var stus = [ {
    "id" : 1,
    "name" : "张三",
    "sex" : "男"
}, {
    "id" : 2,
    "name" : "张敏",
    "sex" : "女"
}, {
    "id" : 3,
    "name" : "张无极",
    "sex" : "男"
} ];
//通过for,或者jq的each函数进行遍历

3.JSON数据的转换

json转字符串

//data字符串
JSON.stringify(data)

字符串转json

//datajson数据
JSON.stringify(data)

[注意:我们可以使用localStroage进行静态页面间的传递数据操作]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值