AJAX

作者: 4d56c320ce84 | 来源:发表于2017-10-23 00:15 被阅读0次

什么是ajax

AJAX (阿贾克斯 Asynchronous Javascript And Xml ) 异步JavaScript和XML,是指一种创建交互式网页应用的网页开发技术, 可以访问服务器数据的局部刷新的技术。

AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术。

作用:

允许客户端脚本发送HTTP请求,去请求服务器的数据来创建动态网页,可以在不重新加载整个网页的情况下,对网页的某部分进行更新。也称局部刷新

JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 通过JavaScript中的一些模式来表示结构化数据, JSON 并不是 JavaScript 独有的数据格式,其他很多语言都可以对 JSON 进行解析和序列化,
除了JSON外, 还有XML也是一种数据表示方式;

JSON 的语法可以表示三种类型的值:

1.对象表示法
2.数组表示法
3.对象和数组的结合的表示法

对象表示法:
JavaScript 对象字面量表示法:

var box = {
      name : 'Zhang', 
      age : 100
};

JSON 中的对象表示法需要加上双引号,并且不存在赋值运算和分号:

{ "name" : "Zhang", //需要使用双引号,否则转换会出错
  "age" : 100
}

数组表示法:
JavaScript 数组字面量表示法:

 var box = [100, 'Zhang', true];

JSON 中的数组表示法同样没有变量赋值和分号:

 [“100”, “Zhang”, “true”]

对象和数组结合的复杂形式:

[ { "name" : "a", 
    "age" : 1
  },
  { "name" : "b",
    "age" : 2 
  },
]

JSON 的解析:

JSON解析就是对JSON格式的字符串解析成原生的JavaScript值(数组或对象)

1.eval()函数. 但这个方法可能会造成安全问题
2.JSON 对象提供了另外两个方法(常用): JSON.parse(): 将JSON字符串转换为JavaScript原生值(对象或数组);
JSON.stringify() : json序列化,将原生JavaScript值(对象或数组)转换为JSON字符串的过程;

XMLHttpRequest

AJAX的核心是 JavaScript对象XMLHttpRequest 。它是一种支持异步请求数据的技术。 (简称 XHR)。

XHR 的出现,提供了向服务器发送请求和解析服务器响应流畅的接口。能够以异步方式从服务器获取更多的信息,这就意味着,用户只要触发某一事件,在不刷新网页的情况下,更新服务器最新的数据。

XHR对象支持IE7+、Firefox、Opera、Chrome 和 Safari 等浏览器, 但是不支持IE6。

创建 XHR 对象可以直接实例化 XMLHttpRequest 。
var xhr = new XMLHttpRequest();
alert(xhr); //XMLHttpRequest

如果是 IE6 及以下,那么我们必须还需要使用 ActiveX 对象通过 传入参数Microsoft.XMLHTTP来实现。
xhr = new ActiveXObject("Microsoft.XMLHTTP");

如何写

open()方法:
它接受三个参数:要发送的请求类型(get、post)、请求的 URL 和表示是否异步 xhr.open('get', 'demo.json', false); //对于demo.json 的 get 请求,false表示同步

send()方法:
向服务器发送请求 open()方法并不会真正发送请求,而是准备好需要发送给服务器的内容。我们需要通过send()方法向服务器发送请求
send()方法接受一个参数,作为请求体发送的数据。如果是get方式请求则填 null。 xhr.send(null);

abort()方法:
取消异步请求, 如果需要取消某异步请求, 则在send()之后再调用, 写在send()之前调用会报错
//取消异步请求 xhr.abort();

XHR 对象的属性:

当请求发送到服务器端,收到响应后,响应的数据会自动填充 XHR 对象的属性。一共有四个属性:

status: 响应的 HTTP 状态 (重要)
statusText: HTTP 状态的说明 (重要)
responseText:  作为响应主体被返回的文本 (重要)
responseXML: 如果响应主体内容类型是"text/xml"或"application/xml",则返回包含响应数据的 XML文档,否则是null

status 属性:

  HTTP请求状态码, 一般 HTTP 状态代码为 200 则表示请求服务器成功
HTTP 协议中, 状态码
   404:  找不到服务器中的资源
   403:  服务器缓存
   500:  服务器故障
   200:  【正常】返回
   400:  语法错误导致服务器不识别
   503:  由于服务器过载或维护导致无法完成请求

readyState 属性

0:       没有发送
1:       已经发送了,但服务器还没有接收到
2:       服务器已经接收到了,但还没有处理完数据
3:       服务器已经处理完数据,并已经返回
4:       客户端已经正常接收到服务器返回的数据
// 1. 创建对象
var xhr = new XMLHttpRequest();

// 2. 准备
        //    参数1: 获取数据的方式, GET、POST
        //    参数2: 向服务器请求数据的地址 格式: 例如:http://ip:8080/ajax/ajaxtest
        //    参数3: false 代表同步的方式请求数据,true 代表异步
        // xhr.open("GET", "http://127.0.0.1:8080/ajax/ajaxtest", false);
xhr.open("GET", "http://127.0.0.1:8080/ajax/ajaxtest", false);

// 3. 发送请求
xhr.send();

// 4. 获取数据
xhr.onreadystatechange = function() {
    if (req.readyState == 4) {
        if (req.status == 200) {
            // 200 说明返回的数据是正常的
            var str = req.responseText;
        }
    }
}

HTTP协议

HTTP是一个属于应用层的面向对象的协议, 由于其简捷,快速的方式, 适用于分布式超媒体信息系统.

HTTP协议的主要特点有:

 1, 支持客户端/服务端模式. 即请求(request)-响应(response)模式
 2, 简单快速,  客户端向服务端发送请求时, 只需要传送请求方式和路径即可,所以简单, 由于HTTP协议简单, 使得HTTP服务器的程序规模小, 因而速度很快;
 3, 灵活, 传输数据类型种类多
 4, 无连接,  请求一次服务器后立刻断开连接, 即非长连接, 即短连接
 5, 无状态,  HTTP协议对事务处理没有记忆能力; session

HTTP协议的请求方式: GET, POST, HEAD, PUT等 HTTP包含: 请求头和请求体 响应头和响应体

GET请求

在通过HTTP协议向服务器请求的过程中,有两种最常用的请求方式,分别是: GET和POST。在Ajax使用的过程中,GET的使用频率又要比POST高得多. GET请求最常用于向服务器获取数据。也可以将少量字符串参数提交给服务器。 xhr.open('get', 'demo.php?football=1&name=Koo', true);

用途: 向服务器传递数据 football=2 football=3

格式: 地址?参数名1=值1&参数名2=值2&参数名3=值3

通过URL后的问号?给服务器传递键值对数据,服务器接收到请求后可以从中获取到对应的数据

POST请求:

POST 请求可以包含非常多的数据,我们在使用表单提交的时候,很多就是使用的 POST 传输方式。
xhr.open('post', 'demo.php', true);

POST请求向服务器发送的数据,不会跟在URL后面,而是通过 send()方法向服务器提交数据。
xhr.send('name=Zhang&age=100');

POST请求和Web表单提交不同,需要使用 XHR 来模仿表单提交
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

GET与POST的对比

 共同点: 都是向服务器请求数据的方式
 GET                                                             
 数据放在地址栏后 ?reg=123&psw=123                                           
 数据量小                                                                      
 安全性低                                                                      
 传输速度快    
 POST
 send(数据参数)
 数据量大
 安全性高
 传输速度慢
字符编码:

特殊字符传参产生的问题可以使用encodeURIComponent()进行编码处理,中文字符的返回及传参,可以将页面保存和设置为 utf-8 格式即可.

//一个通用的函数给URL添加参数
addURLParam(url, name, value) {
    //判断的 url 是否有已有参数 , 添加?或者&来连接参数
    url += (url.indexOf('?') == -1 ? '?' : '&'); 
    url += encodeURIComponent(name) + '=' + encodeURIComponent(value); 
    return url;
}
请求头:

请求头包含HTTP的头部信息, 即服务器返回的响应头信息和客户端发送出去的请求头信息。我们可以获取响应头(response)信息或者设置请求头(request)信息。

//使用 getAllResponseHeaders()获取整个响应头信息
alert(xhr.getAllResponseHeaders());

//使用 getResponseHeader()获取单个响应头信息
alert(xhr.getResponseHeader('Content-Type'));

//使用 setRequestHeader()设置单个请求头信息 xhr.setRequestHeader('MyHeader', Zhang); //放在 open 方法之后,send 方法之前

相关文章

  • AJAX

    主要内容: ajax 是什么、原生ajax 写法和jQuery ajax写法。 AJAX 是什么 ajax,即As...

  • JavaScript进阶知识点--AJAX及JSON

    AJAX 关于 AJAX 什么是 AJAX AJAX 的全称是 Asynchronous JavaScript a...

  • HTML5权威指南 | 第五部分 高级功能

    三十二、使用AJAX(上) Ajax起步: 使用Ajax事件: Ajax请求的错误处理: 中止Ajax请求: 三十...

  • ajax学习笔记

    Ajax学习笔记 Ajax简介 1. Ajax是什么? Ajax : Asynochronous javascri...

  • AJAX

    一、简介 AJAX菜鸟教程 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML。 AJAX...

  • js之AJAX复习

    异步交互和同步交互 什么是Ajax? Ajax的工作原理。 Ajax包含的技术: Ajax的缺陷: Ajax的核心...

  • 复习jQuery - ajax

    jQuery ajax - ajax() 方法 $.ajax({ url:'oo.php', ...

  • jQuery中Ajax请求的使用和四个步骤示例

    ajax() 方法用于执行 AJAX(异步 HTTP)请求,所有的 jQuery AJAX 方法都使用 ajax(...

  • ajax

    1、什么是ajax? 2、ajax的原理 3、ajax的核心对象 4、ajax的优点: ajax的缺点: 被jqu...

  • ajax

    Ajax 1 - 请求纯文本 Ajax 2 - 请求JSON数据 Ajax 3 - 请求Github接口 Ajax...

网友评论

      本文标题:AJAX

      本文链接:https://www.haomeiwen.com/subject/wxziuxtx.html