Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

2023-06-28 0 590

Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

“这儿是使用者端源想IT,帮你随心所欲学IT”

嗨~ 那时的你过得说实话吗?

那个当今世界崎岖碎裂

却也能送出柔情的花来

– 2023.06.28 –

时又让使用者新体验极为差劲,所以是不是化解那个难题呢?

想构筑起后端和后端主干线,那个这时候就须要采用Ajax。那时小贴士首先须要讲的文本是在JS中怎样透过Ajax控制技术展开互联网允诺。

Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

一、Ajax如是说

Ajax是甚么?

Ajax即Asynchronous Javascript And XML(触发器JavaScript和XML)在 2005年被Jesse James Garrett明确提出的新名词,用以叙述一类采用现有控制技术子集的‘新’方法,主要包括:HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 和最重要的XMLHttpRequest。

Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

采用Ajax控制技术网页应用能够快速地将增量更新呈现在使用者界面上,而不须要重载(刷新)整个页面,这使得程序能够更快地回应使用者的操作。

Ajax的优点:

可以无需刷新页面而与服务器端展开通信;允许你根据使用者事件来更新部分页面文本。

Ajax的缺点:

没有浏览历史,不能回退;存在跨域难题(同源);SEO不友好。
Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

Ajax 原理(发送Ajax允诺的五个步骤)

接下来我们来了解一下Ajax 原理是甚么,和发送Ajax允诺的五个步骤,其实也是采用 XMLHttpRequest 对象的五个步骤。

一个完整的 HTTP 允诺须要的是:

允诺的网址、允诺方法 get/post。提交允诺的文本数据、允诺主体等。接收响应回来的文本。
Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

发送 Ajax 允诺的五个步骤:

1)创建触发器对象,即 XMLHttpRequest 对象。

2)采用 open 方法设置允诺参数。open(method, url, async)。参数解释:允诺的方法、允诺的 url、是否触发器。第三个参数如果不写,则默认为 true。

3)发送允诺:send()。

4)注册事件:注册 onreadystatechange 事件,状态改变时就会调用。如果要在数据完整允诺回来的这时候才调用,我们须要手动写一些判断的逻辑。

二、XMLHttpRequest 对象详解

在 JavaScript 中,XMLHttpRequest 是客户端一个 API,它为浏览器与服务器通信提供了一个便捷通道。现代浏览器都支持 XMLHttpRequest API,如 IE 7+、Firefox、Chrome、Safari 和 Opera。

Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

发送允诺

发送允诺的方法:

open(method, url, async);

参数解释:

method:允诺的类型;GET 或 POSTurl:文件在服务器上的位置async:true(触发器)或 false(同步)

另外还有个方法:(仅用于 POST 允诺)

send(string);

POST 允诺时注意:

如果想让像form表单提交数据那样采用POST允诺,就须要采用 XMLHttpRequest 对象的 setRequestHeader()方法来添加 HTTP 头。然后在 send() 方法中添加想发送的数据:

xmlhttp.open(POST, ajax_test.php, true);

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

xmlhttp.send(name=smyhvae&age=27);

onreadystatechange 事件

注册 onreadystatechange 事件后,每当 readyState 属性改变时,就会调用 onreadystatechange 函数。

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

0: 允诺未初始化1: 服务器连接已建立2: 允诺已接收3: 允诺处理中4: 允诺已完成,且响应已就绪

status:

200: “OK”。404: 未找到页面。

在 onreadystatechange 事件中,当 readyState 等于 4,且状态码为 200 时,表示响应已就绪。

Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

服务器响应的文本

responseText:获得字符串形式的响应数据。responseXML:获得 XML 形式的响应数据。

如果响应的是普通字符串,就采用 responseText;如果响应的是 XML,采用 responseXML。

三、常用Ajax允诺方式

手写第一个 Ajax 请求

get 允诺:

//【发送ajax允诺须要五步】

//(1)创建XMLHttpRequest对象

var xmlhttp = new XMLHttpRequest();

//(2)设置允诺的参数。主要包括:允诺的方法、允诺的url。

xmlhttp.open(get, 02-ajax.php);

//(3)发送允诺

xmlhttp.send();

//(4)注册事件。 onreadystatechange事件,状态改变时就会调用。

//如果要在数据完整允诺回来的这时候才调用,我们须要手动写一些判断的逻辑。

xmlhttp.onreadystatechange = function () {

// 为了保证 数据 完整返回,我们一般会判断 两个值

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

//(5)服务端相应:如果能够进入那个判断,说明数据允诺成功了

console.log(数据返回成功: + JSON.stringify(xmlhttp.responseText));

// 伪代码:按业务须要,将接口返回的文本显示在页面上

// document.querySelector(h1).innerHTML = xmlhttp.responseText;

}

};

Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

post允诺:

//(1)触发器对象

var xmlhttp = new XMLHttpRequest();

//(2)设置允诺参数。主要包括:允诺的方法、允诺的url。

xmlhttp.open(post, 02.post.php);

// 如果想采用post提交数据,必须添加此行

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

//(3)发送允诺

xmlhttp.send(name=fox&age=18);

//(4)注册事件

xmlhttp.onreadystatechange = function () {

//(5)服务端相应

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

alert(xmlhttp.responseText);

}

};

Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

封装 Ajax 允诺(重要)

上面的代码,执行顺序很好理解,但在实战开发中,是不会这么写的。假如你的页面中,须要调十次接口,那岂不是要手写十遍 Ajax 允诺?这样会导致大量的重复代码。

Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

所以,我们须要把重复代码封装成一个公共函数,然后透过回调函数处理成功和失败的逻辑。

封装 Ajax 允诺的代码如下:(get 允诺为例)

// 封装 Ajax为公共函数:传入回调函数 success 和 fail

function myAjax(url, success, fail) {

// 1、创建XMLHttpRequest对象

var xmlhttp;

if (window.XMLHttpRequest) {

xmlhttp = new XMLHttpRequest();

} else {

// 兼容IE5、IE6浏览器。不写也没关系

xmlhttp = new ActiveXObject(Microsoft.XMLHTTP);

}

// 2、发送允诺

xmlhttp.open(GET, url, true);

xmlhttp.send();

// 3、服务端响应

xmlhttp.onreadystatechange = function () {

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

var obj = JSON.parse(xmlhttp.responseText);

console.log(数据返回成功: + obj);

success && success(xmlhttp.responseText);

} else {

// 这儿的 && 符号,意思是:如果传了 fail 参数,就调用后面的 fail();如果没传 fail 参数,就不调用后面的文本。因为 fail 参数不一定会传。

fail && fail(new Error(接口允诺失败));

}

};

}

// 单次调用 ajax

myAjax(a.json, (res) => {

console.log(res);

});

// 多次调用 ajax。接口允诺顺序:a –> b –> c

myAjax(a.json, (res) => {

console.log(res);

myAjax(b.json, (res) => {

console.log(res);

myAjax(c.json, (res) => {

console.log(res);

});

});

});

学会了封装 get 允诺之后,封装 post请求也是类似的写法。

Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

下面再列举两种常见的允诺方式:

Jquery-Ajax允诺

// get允诺

$(button).eq(0).click(()=>{

// 方法中有三个参数,给谁发,发甚么参数(对象),回调

$.get(http://127.0.0.1:8001/jquery-server, {a:100,b:200}, (data)=>{

console.log(data);

})

});

// post允诺

$(button).eq(1).click(()=>{

// 方法中有四个参数,给谁发 ,发甚么参数(对象),回调 ,响应体数据类型

$.post(http://127.0.0.1:8001/jquery-server, {a:100,b:200}, (data)=>{

console.log(data);

})

});

// ajax方式

$(button).eq(2).click(()=>{

// 参数是一个对象

$.ajax({

//url

url:http://127.0.0.1:8001/jquery-server,

// 携带参数

data:{a:100, b:200},

// 响应体结果类型设置

// dataType:json,

// 允诺类型

type:GET,

// 成功的回调函数

success:function(data){

console.log(data)

},

// 超时时间

// timeout:2000,

// 头信息设置

// headers:{},

// 失败的回调

// error:function(){}

})

})

Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

Axios-Ajax允诺

// 配置baseURL

// axios.defaults.baseURL = http://127.0.0.1:8001

// 有此配置项后,允诺地址可省略一部分

const btn = document.querySelectorAll(button);

btn[0].addEventListener(click, ()=>{

//GET允诺

axios.get(http://127.0.0.1:8001/axios-server,{

// 允诺参数

params:{

a:700,

b:400

},

// 允诺头信息

// headers:{

// name:张三,

// age:20

// },

// 回调函数

}).then(value =>{

console.log(value)

});

});

btn[1].addEventListener(click,()=>{

axios.post(http://127.0.0.1:8001/axios-server,{

// 携带参数

username:admin,

passward:admin,

})

})

btn[2].addEventListener(click, ()=>{

axios({

// 允诺方法

method:POST,

//url

url:http://127.0.0.1:8001/axios-server,

// 参数

params:{

a:10,

b:100,

},

// 允诺头

Headers:{

c:100,

d:200

},

// 允诺体参数

// data: {

// username:admin,

// passward:admin,

// },

})

})

以上是比较常用的一些允诺方式,希望对大家理解Ajax互联网允诺这一块有点帮助。无论是哪种允诺方式,还是要根据自身所处环境决定怎样采用,如是说的只是方法,而具体逻辑还要看业务需求自行完成。

Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

我们下期再见!

END

文案编辑|使用者端学长

文案配图|使用者端学长

文本由:使用者端源想分享

Ajax是什么?JavaScript中如何使用Ajax技术进行网络请求?

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务