Ajax与JSON

Ajax与JSON

一、Ajax简介

​ Asynchronous Javascript And Xml[异步javascript和xml],在传统的Web开发中,与服务器进行通信主要是通过同步请求的方式(即刷新页面)来实现,如果同步请求的次数过于频繁,就会产生大量无用、重复的数据占用带宽。

Ajax完全摒弃了这种信息交互方式,它通过XMLHttpRequest组件,在不需要刷新页面的情况,与服务器保持异步通信和联系,服务器根据需要进行最小化响应,而不是完整页面的重复发送。

​ 同步:浏览器发送一个请求到服务器端,网址会改变,页面会被重新加载到浏览

​ 异步:浏览器发送一个请求到服务器端,网址不会改变,并且页面只是局部刷新页面。Ajax使用异步的方式从浏览器发送请求,请求服务器端资源,并获得内容。

二、XMLHttpRequest

​ XMLHttpRequest对象用于与服务器交换数据。所有的浏览器 都聚有内置的XMLHttpRequest对象。XMLHttpRequest使用异步的方式来与服务器交换数据,这使的我们可以只更新网页中需要更新的部分,就不需要更新整个网页。

​ 在客户端与服务器进行通信前,首先实例化一个XMLHttpRequest对象。

​ 语法如下:

var  httpRequest = new  XMLHttpRequest();

​ 在使用XMLHttpRequest对象时,不允许跨域访问的,也就是说,只能访问自己站点内的文件。例如,www.sina.com.cn 站点中的文件不能去调用www.tom.com网中的文件。

​ 常用方法:

方法名说明参数
Open(method,url,asyns)规定请求类型,URL以及是否异步处理请求参数:method 发送的请求类型,get或是post url 请求的文件 asyns true为异步,false时为异步
Send()将请求发送到服务器用于get请求
Send(String)将请求发送到到服务器参数String :传递值=值对,只用于post请求
about()取消当前的请求
getAllResponseHeaders()返回标题信息
getResponseHeader()返回特定的标题信息
setRequestHeader(header, value)将Http标头设置为请求header:指定标头名称
value:指定标头
onreadystatechange事件

当请求由XMLHttpRequest对象发送到服务器后,服务器会做出响应。

当服务器的响应后,XMLHttpRequest对象的readyState属性就会发生改变,当此属性改变时就会触发此事件。readyState属性保存的是XMLHttpRequest对象的状态信息。

XMLHttpRequest对象的三个重要属性

​ onreadystatechange属性:他的值是一个函数,每当readState发生改变 时,就执行这个属性指定的函数

​ readyState属性:此属性中保存有XMLHttpRequest的状态信息。共有五种状态。

​ 0.请求未初始化

​ 1.服务器连接已建立

​ 2.请求已接收

​ 3.请求处理中

​ 4.请求已完成,且响应已经就绪

​ Status属性:值为200时,找到了请求页面,请求成功。

​ 值为404时,未找到页面。

其它属性

responseText:以字符串形式返回响应数据

responseXML:将响应数据作为XML数据返回

statusText:返回状态文本(例如,“OK”或“NOT Found”)

XMLHttpRequest对象对新旧浏览器的创建方式也不一样,具体创建方法如下

var  httpRequest;
if (window.XMLHttpRequest) {
    // 目前主流的浏览器(Chrome, Mozilla, Safari, IE7+, ...)
    httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) {
    // <= IE 6 或早期IE版本
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} 

三、Ajax使用实例

1.get请求
var  httpRequest = new  XMLHttpRequest();
httpRequest.open("GET", "ajax_get.jsp", true);//这句可能返回缓存中的数据
                                    //建议用下面的语句
httpRequest.open("GET","ajax_get.jsp?r="+ Math.random(), true);//加入一随机数次url都不一样,这样可保证不会返回缓存中的数据。
httpRequest.send(); //上面写好后,用send方法发到服务器。 

当使用Get请求时url中在?号后面可以加入参数。
httpRequest.open("GET", "ajax_get.jsp?name=zhangSan&sex=男", true);
2.post请求
httpRequest.open("POST", "ajax_post.jsp", true); //要请求的网页
httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//配置http头
httpRequest.send("fname=Seagull&lname=Anna"); //要一起发送的参数和值
//上面写好后,用send方法发到服务器。

​ 上面第二句中setRequestHeader()方法接受两个参数:

​ 参数1:指定标题名称

​ 参数2:指定标题值

3.回调函数
httpRequest.onreadystatechange = function() {
  if (this.readyState === 4 && this.status === 200) {
 document.getElementById("divTable").innerHTML = this.responseText;
  }
};
4.总结使用步骤

​ (1) 创建XMLHttpRequest对象,要注意区分新旧浏览器

​ (2) 配置回调函数。

​ (3) 创建对服务器的请求,这里要注意是如果用post方式,那要配置http头。

​ (4) 配置http头

​ (5) send方法,把上面配置好的发送到服务器。

5.使用例子
//1.创建对象
var  httpRequest;
if (window.XMLHttpRequest) {
    // 目前主流的浏览器(Chrome, Mozilla, Safari, IE7+, ...)
    httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) {
    // <= IE 6 或早期IE版本
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} 
         //2.配置回调函数
httpRequest.onreadystatechange = function() {
  if (this.readyState === 4 && this.status === 200) {
 document.getElementById("divTable").innerHTML = this.responseText;
  }
};
//3.配置请求
httpRequest.open("POST", "ajax_post.jsp", true); //要请求的网页 
//4.配置http头
ttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//配置http头
//5.发送
httpRequest.send("fname=Seagull&lname=Anna"); //要一起发送的参数和值

四、JQuery中Ajax的使用

​ 1.load()方法从服务器读取文件信息

​ $(选择器).load(URL,data,callback);

​ 参数1 URL为请求的地址

​ 参数2 data为键值对数据,和url请求一起发送到服务器

​ 参数3 为回调函数。 服务器响应后在本地执行的函数。

​ 回调函数有三个参数:

​ responseTxt - 包含调用成功时的结果内容

​ statusTXT - 包含调用的状态

​ xhr - 包含 XMLHttpRequest 对象

$("#b2").click(function(){
  $("#div1").load("1.txt",function(responseTxt,statusTxt,xhr){
    if(statusTxt=="success")
      alert("外部内容加载成功!");
    if(statusTxt=="error")
      alert("Error: "+xhr.status+": "+xhr.statusText);
  });
});

  1. $.Get()方法

​ 语法:$.get(URL,callback);

例子:

  $("#b3").click(function(){                                                $.get("kcQuery.jspname=zhangsan&password=12",function(data,status){
  alert("Data: " + data + "\nStatus: " + status);
 });
});

上面回调函数中有data和status两个参数.

data中是从服务器回传的数据。status是请求的状态。

3 $.Post()方法

语法:$.post(URL,data,callback);

​ 必需的 URL 参数规定您希望请求的 URL。

​ 可选的 data 参数规定连同请求发送的数据。

​ 可选的 callback 参数是请求成功后所执行的函数名。

下面的例子使用 $.post() 连同请求一起发送数据:

例子:

 $("#b4").click(function(){
$.post("testPost.jsp?name=zhangsan&password=12",  //参数一
{"name":"张三","city":"北京"}, //参数二
 function(data,status){  //参数三,回调函数
  alert("Data: " + data + "\nStatus: " + status);
});
});
test_post.jsp的内容
<%
String  fname,city
fname=Request.Form("name")
city=Request.Form("city")
**Response.Write("****亲爱的****"** **+****fname** **+** **"****同学****")**
Response.Write("生活在"+ city + "这所城市中。")
%>
  1. $.ajax() 方法
$.ajax({
    url : 'user/checkUname',    <!-- url  :请求地址 -->  
    type : 'post',        <!--type :请求类型:post/get --> 
    data : {           <!--data :发送给服务器的数据 -->    
       uUsername : u,    <!-- 使用自己声明的对象 -->  
       uPwd : $("#pwd").val() <! -- 直接获取页面的对象 -->  
      },
  dataType : 'json',    <!--dataType:服务器返回的数据类型 text/xml/script/html/json/jsonp -->
    success: function(data){   <!--回调函数 -->     
      console.log(data);    <! -- 浏览器控制台显示返回内容(建议使用) -->
      alert(data);       <! -- 弹框显示返回内容 -->
      }
});      

五、JSON简介

json是一种轻量级的数据交换格式,易于人阅读编写,同时也易于机械解析和生成。 json采用完全独立于语言的文本格式,很多语言都提供对json 的支持,包括

c c++ C# java javascript perl python 等,这样使得就json称为理想的数据交换语

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

轻量级指的是跟xml作比较

数据交换指的是客户端和服务器之间业务数据的传递格式

JSON是一种简单的而数据格式,他有三种数据结构

键值对 —— Name/Value (Key/Value) : 左侧为属性,右侧为值

例子: {“name” : ”张三”}

对象 —— Object

一个JSON对象是包含了一组未排序键值对的集合。下面例子中的address就是一个JSON对象:

例子:

{

“peopleInfo” : {

​ “name” : “张三”,

​ “city” : “北京”,

​ “age” : “18”,

​ “country” : “中国”

}

}

数组 —— Arrays

JSON中[ ]来包含数组元素

例子:

{

“people” : [

​ { “firstName”: “John”, “lastName”: “Smith”, “age”: 35 },

​ { “firstName”: “Jane”, “lastName”: “Smith”, “age”: 32 }

]

}

再来看一下JSON 值的数据类型:

  1. Number 数值类型数据可以是整型也可以是双精度的浮点型数据。

​ { “age”:10 }

  1. Boolean 值可以用true或false来表示

​ { “isText” : true }

  1. null 注意空值不是””

    { “name” : null }

  2. String 被””引起来的字符串

    {“name” : “张三”}

  3. Object 见上面

  4. Array 见上面

六、使用场景

1.JSON与Ajax

2.JSON与Java

​ 类库选择

​ Java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库。

下面是几个常用的 JSON 解析类库:

Gson: 谷歌开发的 JSON 库,功能十分全面。

FastJson: 阿里巴巴开发的 JSON 库,性能十分优秀。

Jackson: 社区十分活跃且更新速度很快。

3.JSON与JavaScript

​ 字符串转对象 var jsonObject= JSON.parse(jsonstr);

​ 对象转字符串 var jsonstr =JSON.stringify(jsonObject);

  1. .jQuery基本的Ajax方法

  2. 底层$.ajax使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值