小火柴的博客笔记 小火柴的博客笔记
首页
学过的习
踩过的坑
想过的事
首页
学过的习
踩过的坑
想过的事
  • 学过的习

    • CSS的样式优先级权重
    • 事件冒泡和事件捕获
    • js模块可以通过两种方式对外暴露函数
    • js中的内存泄漏和内存溢出
    • js作用域链
    • 控制台暴露vue
    • es5常用知识总结
    • es6常用知识总结
    • es7常用知识总结
    • js模块化
    • nodeJs学习
    • node搭建服务器
    • webPack学习
    • js原型对象和原型链的理解
    • css阻塞与js阻塞
    • ajax的学习
      • 浏览器的重绘与重排
      • 函数防抖与函数节流学习记录
      • 浏览器储存学习
      • React起步
      • React的基本使用
      • React项目搭建
      • vue中attrs和listeners的使用
      • js的精度问题
      • React的状态管理
      • yarn和npm的对比
      • websocket的使用
    • 想过的事

    • 踩过的坑

    • 前端
    • 学过的习
    小火柴
    目录

    ajax的学习

    # XHR理解

    使用XMLHttpRequest (XHR)对象可以与服务器交互, 也就是发送ajax请求。前端可以获取到数据,而无需让整个的页面刷新。这使得Web页面可以只更新页面的局部,而不影响用户的操作。

    • xhr对象本身有5种状态:xhr “诞生” 的那一刻就是0状态:

      0:xhr对象在实例化出来的那一刻,就已经是0状态,代表着xhr是初始化状态。

      1:send方法还没有被调用,即:请求没有发出去,此时依然可以修改请求头。

      2:send方法被调用了,即:请求已经发出去了,此时已经不可以再修改请求头。

      3:已经回来一部分数据了,如果是比较小的数据,会在此阶段一次性接收完毕,较大数据,有待于进一步接收。

      4:数据完美的回来了。

    # 原生的ajax请求

    • get请求
       
       1.实例化一个XMLHttpRequest对象
        let xhr = new XMLHttpRequest()
    
       2.绑定一个名为onreadystatechange事件监听
        xhr.onreadystatechange = function () { 
           if(xhr.readyState === 4 && xhr.status === 200){
            //如果进入此判断,意味着:请求成功了,且数据已经回来了
            console.log(xhr.response)
           }
        }
    
        3.调用open方法---------用什么方法发?给谁发?带着什么过去?
        xhr.open('get','http://localhost:3000/ajax_get?name=kobe&age=18&t='+Date.now())
    
        4.调用send方法---------发送请求
        xhr.send()
        
      
    
    • post请求
    
        1.实例化一个XMLHttpRequest对象
        let xhr = new XMLHttpRequest()
    
        2.绑定一个名为onreadystatechange事件监听
        xhr.onreadystatechange = function () {
          if(xhr.readyState === 4 && xhr.status === 200){
            console.log(xhr.response)
            let demo = document.getElementById('demo')
            demo.innerHTML = xhr.response
          }
        }
    
        3.调用open方法---------用什么方法发?给谁发?带着什么过去?
        xhr.open('post','http://localhost:3000/ajax_post')
        
        特别注意:此处是设置post请求所特有的请求头,若不设置,服务器无法获取参数
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
    
        4.调用send方法---------发送请求
        xhr.send('name=kobe&age=18')
    
    
    

    # JQuery封装的ajax请求

    • get请求
      
       1、完整的写法
       $.ajax({
          url:'http://localhost:3000/ajax_get',
          method:'get', //发送请求的方式
          data:{name:'kobe',age:41}, //发送请求携带的数据
          //成功的回调
          success:function (result) { 
            console.log(result)
          },
          //失败的回调
          error:function (err) {
            console.log(err)
          }
        })
    
       2、简单的写法
        $.get('http://localhost:3000/ajax_get',{name:'kobe',age:41},(data)=>{
          console.log(data)
        })
    
    
      
     
     
    
    • post请求
      
       1、完整的写法
        $.ajax({
         url:'http://localhost:3000/ajax_post',
         method:'post', //发送请求的方式
         data:{name:'kobe',age:41}, //发送请求携带的数据
         //成功的回调
         success:function (result) {
           console.log(result)
         },
         //失败的回调
         error:function (err) {
           console.log(err)
         }
       })
    
       2、简单的写法
        $.post('http://localhost:3000/ajax_post',{name:'kobe',age:41},(data)=>{
          console.log(data)
        })
        
        
    
    #JS
    css阻塞与js阻塞
    浏览器的重绘与重排

    ← css阻塞与js阻塞 浏览器的重绘与重排→

    Theme by Vdoing | Copyright © 2021-2023 X match
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式