100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > JS中的Ajax发送请求获取数据流程

JS中的Ajax发送请求获取数据流程

时间:2020-09-06 02:18:36

相关推荐

JS中的Ajax发送请求获取数据流程

前言:JS两个常用的请求方法 【XMLHttpRequest() 、fetch()

XMLHttpRequest()的使用方法大致可以分为四步:

1、创建XMLHttpRequest的对象成员

2、使用open方法执行发送前的需要加入的参数

3、使用send方法进行请求,在send方法中可传入参数

4、使用onreadstatechange制定回调函数对返回的数据进行处理

fetch()的使用方法比之XMLHttpRequest稍简单一些,直接通过语法格式来看更明了一些

语法格式:

fetch(url,object) //可以在object中填入请求方式、设置请求头等一些数据。具体的可看博客最下方的MDN代码片段.then(response => response.json()).then(data =>{//数据获取成功回调//data为请求回来的数据}).catch(err => {//数据获取失败回调console.log(err.message)})

一、XMLHttpRequest( )

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><script type="text/javascript">window.onload = function(){//1、创建对象 兼容处理var xhr = null;/*if条件判断当前浏览器是否有XMLHttpRequest(),如果有直接创建一个XMLHttpRequest()实例对象,如果没有那就是使用else条件下的用于兼容IE8以下IE浏览器的方法*/if(window.XMLHttpRequest) {xhr = new XMLHttpRequest();} else {xhr = new ActiveXObject("Microsoft.XMLHTTP");}//2、准备发送/*open方法传入三个参数,第一个是请求方式,第二个是地址,第三个是设置同步或异步,基本上设置为true(也就是异步方法)*/xhr.open("get","后端URL地址",true);//3、执行发送xhr.send(null); //send方法中可以传入发送时携带的数据,用于后台验证/*//post请求方法xhr.open("post","URL地址",true); //异步post请求xhr.setRequestHeader("设置请求头信息");xhr.send('携带的请求参数,如:用户名、密码等');*///4、制定回调函数xhr.onreadystatechange = function(){if(xhr.readyState == 4){if(xhr.status == 200){/*responseText用于获取到后端传过来的数据,这里是json格式,如果是XML格式则使用//var result = xhr.responseXML;*/var result = xhr.responseText; //获取JSON数据result = JSON.parse(result); //解析JSON数据//对返回数据进行处理,用于更新页面var newHtml = document.getElementById("container").innerHTML;for(var i=0;i<result.length;i++){var item = result[i];var name = item.name;var sex = item.sex;var age = item.age;console.log(name,sex,age);var tempHtml =`<tr><td>${name}+</td><td>${age}</td><td>${sex}</td></tr>`;newHtml += tempHtml;}//将数据渲染到页面document.getElementById("container").innerHTML = newHtml; }}};};</script></head><body><div><table id="container"><tr><th>姓名</th><th>年龄</th><th>性别</th></tr></table></div></body></html>

以上代码中展示了JavaScript 的Ajax发送请求和获取数据的流程,大致可以分为四步:

1、创建XMLHttpRequest实例对象xhr = new XMLHttpRequest( )2、使用open方法发送请求xhr.open("请求方法","后端URL地址",true/false);3、执行发送xhr.send(请求携带的参数);4、制定回调函数解析后台返回数据并将其渲染到页面xhr.onreadystatechange = function(){// 方法体//responseText用于获取到后端传过来的数据,这里是json格式,如果是XML格式则使用//var result = xhr.responseXML;var result = xhr.responseText; //获取JSON数据result = JSON.parse(result); //解析JSON数据}

二、fetch()

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><script>fetch('/search?keywords=喜欢你').then(response => {console.log(response) //得到的是一个response对象return response.json() //使用该对象的json方法使其返回一个promise对象}).then(data => {//使用promise对象的then方法处理得到的数据console.log(data) }).catch(err =>{//使用promise对象的catch捕获错误信息console.log(err.message)})</script></body></html>

以下资料来自MDN官方可供参考

// Example POST method implementation:async function postData(url = '', data = {}) {// Default options are marked with *const response = await fetch(url, {method: 'POST', // *GET, POST, PUT, DELETE, etc.mode: 'cors', // no-cors, *cors, same-origincache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cachedcredentials: 'same-origin', // include, *same-origin, omitheaders: {'Content-Type': 'application/json'// 'Content-Type': 'application/x-www-form-urlencoded',},redirect: 'follow', // manual, *follow, errorreferrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-urlbody: JSON.stringify(data) // body data type must match "Content-Type" header});return response.json(); // parses JSON response into native JavaScript objects}postData('/answer', {answer: 42 }).then(data => {console.log(data); // JSON data parsed by `data.json()` call});

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。