AJAX-day02-AJAX原理

简介: AJAX-day02-AJAX原理

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

XMLHttpRequest

了解XMLHttpRequest

使用 XMLHttpRequest  

XMLHttpRequest - 查询参数

XMLHttpRequest - 数据提交

Promise

了解Promise

Promise - 三种状态

封装_简易axios_获取省份列表  


XMLHttpRequest

了解XMLHttpRequest

定义:

关系:axios 内部采用 XMLHttpRequest 与服务器交互

好处:掌握使用 XHR 与服务器进行数据交互,了解 axios 内部原理

使用 XMLHttpRequest  

步骤:

1. 创建 XMLHttpRequest 对象

2. 配置 请求方法 和请求 url 地址

3. 监听 loadend 事件,接收 响应结果

4. 发起请求  

<script>
    /**
     * 目标:使用XMLHttpRequest对象与服务器通信
     *  1. 创建 XMLHttpRequest 对象
     *  2. 配置请求方法和请求 url 地址
     *  3. 监听 loadend 事件,接收响应结果
     *  4. 发起请求
    */
   //1.创建XMLHttpRequest对象
   const xhr = new XMLHttpRequest()
   //2.配置请求方法和请求url地址
   xhr.open('GET','http://hmajax.itheima.net/api/province')
   xhr.addEventListener('loadend',()=>{
    console.log(xhr.response)
   })
   xhr.send()
  </script>

XMLHttpRequest - 查询参数

定义:浏览器提供给服务器的额外信息,让服务器返回浏览器想要的数据

语法:http://xxxx.com/xxx/xxx?参数名1=值1&参数名2=值2

<body>
  <p class="city"></p>
  <script>
    /**
     * 目标:使用XHR携带查询参数,展示某个省下属的城市列表
    */
    const xhr = new XMLHttpRequest()
    xhr.open('GET','http://hmajax.itheima.net/api/city?pname=河南省')
    xhr.addEventListener('loadend',()=>{
      //打印字符串
      console.log(xhr.response)
      //将字符串转换为对象
      const data=JSON.parse(xhr.response)
      document.querySelector('.city').innerHTML=data.list.join('<br>')
    })
    xhr.send()
  </script>
</body>

XMLHttpRequest - 数据提交

需求:通过 XHR 提交用户名和密码,完成注册功能

核心:

请求头设置 Content-Type:application/json

请求体携带 JSON 字符串

<body>
  <button class="reg-btn">注册用户</button>
  <script>
    /**
     * 目标:使用xhr进行数据提交-完成注册功能
    */
    document.querySelector('.reg-btn').addEventListener('click', () => {
      const xhr = new XMLHttpRequest()
      xhr.open('POST','http://hmajax.itheima.net/api/register')
      xhr.addEventListener('loadend',()=>{
        //打印字符串
        console.log(xhr.response)
      })
      //设置请求头
      xhr.setRequestHeader('Content-Type','application/json')
      //准备提交的数据
      const userObj={
        username:'zxc123456',
        password:'7654321'
      }
      const userStr=JSON.stringify(userObj)
      //设置请求体,发起请求
      xhr.send(userStr)
    })
  </script>
</body>
</html>

Promise

了解Promise

定义:

好处:

1. 逻辑更清晰

2. 了解 axios 函数内部运作机制

3. 能解决回调函数地狱问题

语法:

<body>
  <script>
    /**
     * 目标:使用Promise管理异步任务
    */
    // 1. 创建Promise对象
    const p = new Promise((resolve, reject) => {
      // 2. 执行异步代码
      setTimeout(() => {
        // resolve('模拟AJAX请求-成功结果')
        reject(new Error('模拟AJAX请求-失败结果'))
      }, 2000)
    })
    // 3. 获取结果
    p.then(result => {
      console.log(result)
    }).catch(error => {
      console.log(error)
    })
  </script>
</body>

Promise - 三种状态

作用:了解Promise对象如何 关联 的 处理函数 ,以及代码执行顺序

概念:一个Promise对象,必然处于以下几种状态之一

       待定(pending) :初始状态,既没有被兑现,也没有被拒绝

       已兑现(fulfilled) :意味着,操作成功完成

       已拒绝(rejected) :意味着,操作失败

注意:Promise对象一旦被兑现/拒绝

就是已敲定了,状态无法再被改变

封装_简易axios_获取省份列表  

需求:基于 Promise + XHR 封装 myAxios 函数,获取省份列表展示

步骤:

1. 定义 myAxios 函数,接收 配置对象 ,返回 Promise 对象

2. 发起 XHR 请求,默认请求方法 为 GET

3. 调用成功/失败的处理程序

4. 使用 myAxios 函数,获取 省份列表展示  

<body>
  <p class="my-p"></p>
  <script>
    /**
     * 目标:封装_简易axios函数_获取省份列表
     *  1. 定义myAxios函数,接收配置对象,返回Promise对象
     *  2. 发起XHR请求,默认请求方法为GET
     *  3. 调用成功/失败的处理程序
     *  4. 使用myAxios函数,获取省份列表展示
    */
    //1.定义myAxios函数,接收配置对象,返回Promise对象
    function myAxios(config){
      return new Promise((resolve,reject)=>{
        //2.发起xhr请求,默认请求方法为GET
        const xhr = new XMLHttpRequest()
        xhr.open(config.method || 'GET',config.url)
        xhr.addEventListener('loadend',()=>{
          //3.调用成功/失败的处理程序
          if(xhr.status>=200&&xhr.status<300){
            resolve(JSON.parse(xhr.response))
          }
          else{
            reject(new Error(xhr.response))
          }
        })
        xhr.send()
      })
    }
    //4.使用myAxios函数,获取省份列表展示
    myAxios({
      url:'http://hmajax.itheima.net/api/province'
    }).then(result=>{
      console.log(result);
      document.querySelector('.my-p').innerHTML=result.list.join('<br>')
    }).catch(error=>{
      console.log(error);
    })
  </script>
</body>


相关文章
|
2月前
|
XML 前端开发 JavaScript
AJAX 工作原理
**AJAX**利用JavaScript与`XMLHttpRequest`异步通信,结合DOM操作、CSS样式和XML数据格式,实现页面无刷新更新。Google Suggest在2005年通过此技术提升了用户体验,用户输入时动态获取搜索建议,展示了AJAX的平台无关性和创新交互。
|
3月前
|
XML 前端开发 JavaScript
ajax原理是什么?如何实现?
ajax原理是什么?如何实现?
60 0
|
11月前
|
前端开发 安全 数据格式
js-ajax的工作原理
前后端交互,首先需要创建一个XMLHttpRequest对象,通过这个对象的open方法与服务器建立连接,通过send方法将请求发送给服务器,最后通过事件监听,将后端请求的数据通过回调函数返回给前端。
|
11月前
|
XML 前端开发 JavaScript
Ajax运行原理
Ajax运行原理
90 0
|
2月前
|
XML 前端开发 JavaScript
AJAX 工作原理
AJAX是一种利用XMLHttpRequest对象、JavaScript/DOM、CSS和XML进行异步数据交换的技术,实现浏览器和平台无关的动态Web界面。Google Suggest在2005年通过使用AJAX,实现了用户输入关键词时实时显示搜索建议的功能,极大提升了用户体验。
|
3月前
|
XML 前端开发 JavaScript
AJAX 工作原理
**AJAX**利用XMLHttpRequest与服务器异步交互数据,结合JavaScript/DOM处理显示,CSS样式设计及XML数据格式,实现平台无关的动态Web应用。Google Suggest于2005年通过AJAX技术提供实时搜索建议,增强了用户体验。
|
2月前
|
XML 前端开发 JavaScript
AJAX 工作原理
**AJAX**利用**XMLHttpRequest**进行异步数据交换,结合**JavaScript/DOM**更新页面,借助**CSS**样式和**XML**数据格式,实现跨平台的动态Web应用。谷歌的**Google Suggest**在2005年展示了AJAX的力量,用户输入时即刻获取搜索建议,无需刷新页面。
|
2月前
|
XML 前端开发 JavaScript
AJAX 工作原理
**AJAX**利用**XMLHttpRequest**进行异步数据交换,结合**JavaScript/DOM**更新页面,借助**CSS**样式呈现,有时使用**XML**传输数据,实现跨平台的Web交互。标志性应用是2005年**Google Suggest**,它在用户输入时动态提供搜索建议,展示了AJAX提升用户体验的能力。
|
3月前
|
XML 前端开发 JavaScript
AJAX 工作原理
**AJAX**利用JavaScript与`XMLHttpRequest`对象异步通信,结合DOM操作、CSS样式及XML数据格式,实现页面无刷新更新。Google Suggest在2005年借助AJAX技术,展示了动态输入建议功能,提升了用户体验。此技术跨浏览器、跨平台,促进了Web交互性的革命。
|
3月前
|
XML 前端开发 JavaScript
AJAX 工作原理
**AJAX**利用**XMLHttpRequest**进行异步数据交换,结合JavaScript/DOM操控页面,CSS美化,XML处理数据,实现平台无关的动态交互。Google Suggest(2005)是其典范,输入关键词即实时获取搜索建议,提升用户体验。