原生ajax基础知识笔记

原生ajax基础知识笔记

1、创建 XMLHttpRequest 对象


所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。

老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveXObject。

代码示例:

// Creates a XMLHttpRequest object.

var xhr = new XMLHttpRequest();

兼容浏览器代码示例:

var xhr;

//根据标准的浏览器是否支持标准的创建方法来创建对象

//先判断浏览器是否具备XMLHttpRequest()方法;

if(window.XMLHttpRequest){

//有,表示当前是标准浏览器;

xhr = new XMLHttpRequest(); // 支持IE8,9;w3c标准。

}else{

//无,表示不是标准浏览器, 是 IE 5,6,7;

//在IE5,6,7这些老版的浏览器中,Ajax组件是放在ActiveXObject组件库中的,需要传入Micrsoft.XMLHTTP 这个参数才能返回出这个组件。

xhr = new ActiveXObject(‘Micrsoft.XMLHTTP‘);

}

2、Ajax 向服务器发送请求


创建XHR对象后,将请求发送到服务器,使用 XMLHttpRequest 对象的 open() 和 send()方法:

代码示例:

//GET请求

//如果有参数,则把请求参数直接拼接在url之后

xhr.open(‘GET‘,‘JSON.html‘,true);

//发送请求:

//GET 请求send()参数可以不写,最好在send(null)参数中写上null

xhr.send();

open(method,url,async)方法:

method:请求的类型;GET 或 POST

url:文件在服务器上的位置

async:true(异步)或 false(同步)

send(string)方法:

将请求发送到服务器;string:仅用于 POST 请求

3、GET 请求


一个简单的 GET 请求 (可能得到的是缓存的结果):

xhr.open("GET","/try/ajax/demo_get.php",true);

xhr.send();

为了避免这种情况,请向 URL 添加一个唯一的 ID:

xhr.open("GET","/try/ajax/demo_get.php?t=" + Math.random(),true);

xhr.send();

希望通过 GET 方法发送信息,请向 URL 添加信息:

xhr..open("GET","/try/ajax/demo_get2.php?fname=Henry&lname=Ford",true);

xhr.send();

4、POST 请求


一个简单 POST 请求:

xhr..open("POST","/try/ajax/demo_post.php",true);

xhr.send();

如果需要像 HTML 表单那样 POST 数据,就使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定所希望发送的数据:

xhr.open("POST","/try/ajax/demo_post2.php",true);

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

xhr.send("fname=Henry&lname=Ford");

setRequestHeader(header,value)方法:

向请求添加 HTTP 头;header: 规定头的名称

value: 规定头的值

5、GET 还是 POST?


与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。

然而,在以下情况中,请使用 POST 请求:

无法使用缓存文件(更新服务器上的文件或数据库)

向服务器发送大量数据(POST 没有数据量限制)

发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

6、url - 服务器上的文件


open() 方法的 url 参数是服务器上文件的地址:

xhr.open("GET","ajax_test.html",true);

该文件可以是任何类型的文件,比如 .txt 和 .xml,或者服务器脚本文件,比如 .asp 和 .php (在传回响应之前,能够在服务器上执行任务)。

7、Async=true


当使用 async=true 时,规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数:

xhr.open("GET","/try/ajax/ajax_info.txt",true);

xhr.send();

xhr.onreadystatechange=function()

{

if (xhr.readyState==4 && xhr.status==200)

{

document.getElementById("myDiv").innerHTML=xhr.responseText;

}

}

8、Async=false


不推荐使用 async=false,因为JavaScript 会等到服务器响应就绪才继续执行。如果服务器繁忙或缓慢,应用程序会挂起或停止。当使用 async=false 时,不要编写 onreadystatechange 函数 把代码放到 send() 语句后面即可::

xhr.open("GET","/try/ajax/ajax_info.txt",false);

xhr.send();

document.getElementById("myDiv").innerHTML=xhr.responseText;

9、Ajax 服务器响应


获得来自服务器的响应,使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。

responseText 属性: 获得字符串形式的响应数据。

document.getElementById("myDiv").innerHTML=xhr.responseText;

responseXML 属性: 获得 XML 形式的响应数据。且需要作为 XML 对象进行解析,使用 responseXML 属性:

xmlDoc=xmlhttp.responseXML;

txt="";

x=xmlDoc.getElementsByTagName("ARTIST");

for (i=0;i<x.length;i++)

{

txt=txt + x[i].childNodes[0].nodeValue + "<br>";

}

document.getElementById("myDiv").innerHTML=txt;

10、AJAX - onreadystatechange 事件


当请求被发送到服务器时,我们需要执行一些基于响应的任务。

每当 readyState 改变时,就会触发 onreadystatechange 事件。

readyState 属性存有 XMLHttpRequest 的状态信息。

下面是 XMLHttpRequest 对象的三个重要的属性:

onreadystatechange : 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。

readyState : 存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

0: 请求未初始化

1: 服务器连接已建立

2: 请求已接收

3: 请求处理中

4: 请求已完成,且响应已就绪

status

200: "OK"

404: 未找到页面

在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。

当 readyState 等于 4 且状态为 200 时,表示响应已就绪:

xhr.onreadystatechange=function(){

if (xhr.readyState==4 && xhr.status==200){

document.getElementById("myDiv").innerHTML=xhr.responseText;

}

}

使用回调函数:

回调函数是一种以参数形式传递给另一个函数的函数。

如果您的网站上存在多个 AJAX 任务,那么您应该为创建 XMLHttpRequest 对象编写一个标准的函数,并为每个 AJAX 任务调用该函数。

该函数调用应该包含 URL 以及发生 onreadystatechange 事件时执行的任务(每次调用可能不尽相同):

function myFunction(){

loadXMLDoc("/try/ajax/ajax_info.txt",function(){

if (xmlhttp.readyState==4 && xmlhttp.status==200){

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

}

});

}

时间: 2024-08-02 02:51:14

原生ajax基础知识笔记的相关文章

网络连接相关基础知识笔记

一.常说的TCP/IP的含义 TCP/IP协议簇并不仅仅指TCP协议和IP协议,实际它包括了一系列协议组成的集合,如:TCP,IP,UDP,FTP,SMTP,DNS,ARP,PPP等 TCP与UDP协议都属于传输层协议,但有很大不同,TCP是面向连接的协议,提供的是可靠的数据流服务,TCP采用"带重传的肯定确认"机制来实现传输的可靠性,实现了一种"虚电路",因为从物理上来说,并不是真正在两台主机间建立了连接,这种连接只是存在于逻辑上的.最大的开销出现在通信前建立连接

Ajax基础知识 浅析(含php基础语法知识)

1.php基础语法    后缀名为.php的文件 (1) echo   向页面中输入字符串  <?php    所有php相关代码都要写在<?php ?>这个标签之中 echo "<div>Hello World!</div>"; ?> (2) $  变量声明  如果只声明不赋值,会报错 <?php $num=123; echo $num; echo "<div>编号为:".$num."&l

AJAX 基础知识

AJAX 基础知识 一.AJAX综述 1.AJAX的概念 A:异步asynchronousJ:JavaScriptA:andX:XML 异步的JavaScript和XML. 2.AJAX的优点(好处) 1),提高用户体验度  2),JS与服务端的交互  3),页面局部刷新--提高浏览器的效率 2.AJAX的缺点(弊端)    加大服务器的负担 注:新思想,老技术. 二.实现AJAX功能 (一).JS实现AJAX功能 1.获得XMLHttpRequest(浏览器的兼容) (二).JQuery实现A

Oracle基础知识笔记(10) 约束

大清早打开vs2008,出现这么诡异的错, 删了一个dll的就好了.如图 Oracle基础知识笔记(10) 约束

Oracle基础知识笔记(11) 建表、更新、查询综合练习

有某个学生运动会比赛信息的数据库,保存了如下的表: 运动员sporter(运动员编号sporterid,运动员姓名name,运动员性别sex,所属系号department) 项目item(项目编号itemid,项目名称itemname,项目比赛地点location) 成绩grade(运动员编号id,项目编号itemid,积分mark) 请用SQL语句完成如下功能: 1.  建表,并在相应字段上增加约束: 定义各个表的主键和外键约束: 运动员的姓名和所属系别不能为空: 积分要第为空值,要么为6,4

原生AJAX基础讲解及兼容处理

原文:原生AJAX基础讲解及兼容处理 AJAX = Asynchronous JavaScript and XML (异步的JavaScript和XML). AJAX不是新技术 ,但却是热门的技术.它可以在不重载(刷新)整个页面的情况下与服务器进行数据交互并更新网页模块. AJAX的优点有很多:可以局部刷新.按需加载,这样就减轻了服务器的数据流量.并且在页面更新的同时,用户可以浏览器网页的其它内容而不受影响,也减轻了结构负担.AJAX也不是万能的,在有以上优点的同时SEO也受到了影响. 在学习A

11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库

1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处理页面的,处理页面只是操作数据库并且返回值,页面都是ajax处理的. ajax的写法: test.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR

Ajax基础知识分享

整理的一点有关ajax的知识,给大家分享下! 说到ajax首先我们先要了解一下关于ajax的原理和XmlHttpRequest对象:Ajax的原理简单来说通过XmlHttpRequest对象来向服务器获得数据,然后用javascript来操作DOM而更新页面,这其中最关键的一步就是从服务器获得请求数据.要清楚这个过程和原理. XMLHttpRequest用于后台与服务器交换数据,这意味着可以在不重新加载整个网页的情况下,对网站部分进行更新,当请求被发送到服务器时,每当readyState改变时,

unity基础知识笔记一(快捷方式、基础概念)

快捷方式: 飞行模式,可以用alt+wasd ,切换,实现用户以第一视角在场景漫游 alt+鼠标左键:围着关注点旋绕 :切换天空盒.雾效,光晕的显示与隐藏. ctrl+6:可以弹出animation视图 基础概念: Mesh Filter:网格过滤器用于从对象中获取网格信息(Mesh)并将其传递到用于将其渲染至屏幕的网格渲染器当中 Mesh Collider:Mesh碰撞体,为了防止物体被穿透,需要给对象添加碰撞体 Mesh Renderer:网格渲染器从网格过滤器获得几何形状,并且根据Tran