ajax兼容写法,ajax的原理和使用步骤(兼容性写法)

Ajax是前后台交互的方式,在不重新加载整个网页的情况下,与服务器交换数据,并且更新部分网页

Ajax是异步请求,在请求接口的同时,页面不卡死,回调处理接口返回的后续任务

XMLHttpRequest 对象用于在后台与服务器交换数据。

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

创建 XMLHttpRequest 对象的语法:

xmlhttp=new XMLHttpRequest();

老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

创建Ajax的步骤:

1、创建一个XMLHttpRequest异步对象

var xhr;

if (window.XMLHttpRequest){

xhr=new XMLHttpRequest();

}else{

xhr=new ActiveXObject("Microsoft.XMLHTTP");

}

2、设置请求方式和请求地址

方法 xhr.open()

xhr.open()方法有三个参数

第一个参数 :发送请求所使用的方法(GET 还是 POST)。

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

在以下情况中,需要使用 POST 请求:

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

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

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

第二个参数:服务器端脚本的 URL地址,可以是任何类型的文件

第三个参数:同步异步的设置 (true(异步)或 false(同步))。

//get

xhr.open("get", "getPage.json", true)

// post 方式发送数据 需要设置请求头

xhr.open("post", "getPage.json", true)

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

如果是post方法,需要设置Content-Type,默认就是www-form

3、用send发送请求

xhr.send() 方法可将请求送往服务器。

// get 不需要传递参数

xhr.send(null)

// post 需要传递参数

xhr.send("pageSize=20&currentPage=1")

4、监听状态变化

onreadystatechange

每当 readyState 属性改变时,就会调用该函数。

readyState

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

0: 请求未初始化

1: 服务器连接已建立

2: 请求已接收

3: 请求处理中

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

status

状态码 200:成功

xhr.onreadystatechange = function() {

// 判断异步对象的状态

if(xhr.readyState == 4) {

// 判断交互是否成功

if(xhr.status == 200) {

// 获取服务器响应的数据

var res = xhr.responseText//返回的数据

// 解析数据

res = JSON.parse(res)

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
原生的 AJAX 在不同的浏览器下会有不同的写法。以下是一种常见的兼容各种浏览器的写法: ``` function createXHR() { if (typeof XMLHttpRequest != "undefined") { return new XMLHttpRequest(); } else if (typeof ActiveXObject != "undefined") { if (typeof arguments.callee.activeXString != "string") { var versions = [ "MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp" ]; for (var i = 0, len = versions.length; i < len; i++) { try { new ActiveXObject(versions[i]); arguments.callee.activeXString = versions[i]; break; } catch (ex) { // 跳过 } } } return new ActiveXObject(arguments.callee.activeXString); } else { throw new Error("No XHR object available."); } } function ajax(options) { var xhr = createXHR(); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) { options.success(xhr.responseText); } else { options.error(xhr.status); } } }; var url = options.url; var method = options.method || "GET"; var async = options.async || true; var data = options.data || null; xhr.open(method, url, async); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send(data); } ``` 这段代码中,`createXHR()` 函数用于创建 XMLHttpRequest 对象,如果浏览器支持 XMLHttpRequest,则创建 XMLHttpRequest 对象并返回;否则,尝试使用 ActiveXObject 创建 XMLHttpRequest 对象。在 `ajax()` 函数中,首先调用 `createXHR()` 函数创建 XMLHttpRequest 对象,然后设置 `xhr.onreadystatechange` 函数,当 readyState 变为 4 时,判断状态码是否在 200 到 299 之间或者是否为 304,如果是则调用 `options.success()` 函数,否则调用 `options.error()` 函数。接着设置请求的 URL、请求方法、是否异步、请求数据类型等信息,最后发送请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值