AJAX 原理_第一节_XHR 对象

发布于:2025-07-28 ⋅ 阅读:(12) ⋅ 点赞:(0)

1.AJAX原理

1.1 初识XML

AJAX原理是什么?

XMLHttpRequest对象

XHR对象定义:
通过XMLHttpRequest可以在不刷新页面的情况下请求特定URL,获取数据.这允许页面在不影响用户操作的情况下,更新页面的局部内容.XMLHttpRequest 在 AJAX 编程中被大量使用

为什么学习XHR?

有更多与服务器数据通信方式
了解axios内部原理

XHR使用步骤?

1.创建XHR对象
2.调用open方法,设置url和请求方法
3.监听loadend事件,接收结果
4.调用send方法,发起请求

下面是代码实例:

//1.创建 XMLHttpRequest 对象
const xhr=new XMLHttpRequest()

// 2.配置请求方法和请求 url 地址
xhr.open('GET','http://hmajax.itheima.net/api/province')

// 3.监听 loadend 事件,接收响应结果
xhr.addEventList('loadend',()=>{
console.log(xhr.reponse)
//将数据分离--为了展示数据--不是必要步骤
const data =JSON.parse(xhr.response)
console.log(data.list.join('<br>')
document.querySelector('.my-p').innerHTML=data.list.join('<br>'
})

1.2 查询参数

在这里插入图片描述

 <script>
    /**
     * 目标:使用XHR携带查询参数,展示某个省下属的城市列表
    */
  //  使用 XHR4步走
  // 1.创建 XML 对象
  const xhr=new XMLHttpRequest()
  // 2.配置请求方法和请求 url 地址
  xhr.open('GET','http://hmajax.itheima.net/api/city?pname=黑龙江省')
  // 3.监听 loadend 事件,接收响应结果
  xhr.addEventListener('loadend',()=>{
    console.log(xhr.response)
    const data=JSON.parse(xhr.response)
    console.log(data)
    document.querySelector('.box').innerHTML=data.list.join('<br>')
  })
  // 4.发送
  xhr.send()
  </script>

1.3 案例-地区查询

查看接口文档:
在这里插入图片描述

通过查看接口文档可知,查询参数有两个,正常通过 GET 查询的时候,需要拼接 比如xhr.open(‘GET’,‘http://hmajax.itheima.net/api/city?pname=黑龙江省&…’),参数一多,拼接起来的效率就低了

通过一种方法:new URLSearchParams(),可以把你传来的对象变成参数名=参数值&参数名=参数值…的这种形式,然后直接放入到 xhr.open 中使用

方法核心代码:

 // 1.收集带拼接的参数值
    const pname=document.querySelector('.province').value
    const cname=document.querySelector('.city').value

    //2.将收集的参数值,写成对象的形式,对象中有参数名:参数值的形式
    const qObj={
      pname,
      cname
    }

    //3.将收集而来的对象,转化成 XXX&XXX 的形式
    //步骤一:
    const paramsObj=new URLSearchParams(qObj)
    //步骤二:
    const queryString=parmsObj.toString()

完整代码:

 <script>
document.querySelector('.sel-btn').addEventListener('click',()=>{

 // 1.收集带拼接的参数值
    const pname=document.querySelector('.province').value
    const cname=document.querySelector('.city').value

    //2.将收集的参数值,写成对象的形式,对象中有参数名:参数值的形式
    const qObj={
      pname,
      cname
    }

    //3.将收集而来的对象,转化成 XXX&XXX 的形式
    //步骤一:
    const paramsObj=new URLSearchParams(qObj)
    //步骤二:
    const queryString=paramsObj.toString()

    //使用 XHR 对象查询参数
     // 1.创建 XML 对象
  const xhr=new XMLHttpRequest()
  // 2.配置请求方法和请求 url 地址
  xhr.open('GET',`http://hmajax.itheima.net/api/area?${queryString}`)
    // 3.监听 loadend 事件,接收响应结果
  xhr.addEventListener('loadend',()=>{
    console.log(xhr.response)
    const data=JSON.parse(xhr.response)
    console.log(data)
   
    //处理渲染数据
    const htmlStr =data.list.map(araeName=>{
      return `<li class="list-group-item">${araeName}</li>`
    }).join('')
    console.log(htmlStr)
    document.querySelector('.list-group').innerHTML=htmlStr
  })
  // 4.发送
  xhr.send()

})
  </script>

渲染数据代码详解

const htmlStr = data.list.map(areaName => {
  return <li class="list-group-item">${areaName}</li>;
}).join('');
  • data.list,拿数据的数组
  • .map 循环每一项,拿到一个字符串数组,每一项就是 return 的 li 标签
  • ()里是箭头函数,areaName就是每一项的值,后面用了模板字符串
  • .join(‘’),将字符串数组拼接起来’'表示中间不加东西的拼接

在这里插入图片描述

1.4 案例-注册-设置请求头

在这里插入图片描述
根据接口文档,使用 XHR 对象,需要告诉服务器内容类型,比如这个文档就是告诉服务器传 JSON 数据
在这里插入图片描述
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到