JavaScript必备知识点之XMLHttpRequest请求

  • XMLHttpRequest 对象用于在后台与服务器交换数据。
  • 使用XMLHttpRequest能够:在不重新加载页面的情况下更新网页、在页面已加载后从服务器请求数据、在页面已加载后从服务器接收数据、在后台向服务器发送数据。

创建XMLHttpRequest对象:
xml = new XMLHttpRequest();

open(): 初始化请求,接收参数有请求的类型、URL、是否异步。
send(): 向服务器发送请求,参数为需要发送的数据。
onreadystatechange: on ready state change (当 准备 状态 改变),它是一个函数,当XMLHttpRquest状态发送改变时会触发,状态(readyState)由0到4变化。

  • 0:初始状态xhr对象刚创建完
  • 1:连接到服务区
  • 2:发送请求- 刚刚send完
  • 3:接收完成- header接收完了
  • 4:接收完成- body接收完了
    只有当readyState状态等于4的时候我们才认为一次请求完成了。

status: 服务器状态码。

  • 2xx [200,300)区间请求成功。
    1)200:请求成功,正常响应
    2)201:请求已完成,新的资源创建
    3)202:已经接受请求,等待接受处理
    4)203:服务器已成功处理了请求,但返回的信息可能来自另一来源
    5)204:请求已被处理,但没有任何内容返回
    6)205:没有新的内容,但浏览器应该重置它所显示的内容
    7)206:服务器成功处理了部分 GET 请求
    8)207:XML消息,可以包含一系列独立的响应
    9)208:以前返回的结果
    10)226:请求已完成,响应是实例操作
  • 3xx 重定向
    1)300:客户请求的文档可以在多个位置找到
    2)301:客户请求的文档已经被永久移动到其他地方
    3)302:客户请求的文档被临时移动到其他地方
    4)303:对应当前请求的响应可以在另一个URI上被找到
    5)304:请求资源从上次请求以来未被修改
    6)305:客户请求的文档应该通过指定的代理服务器提取
    7)307:请求的资源现在临时从不同的URI响应请求
    8)308:使用相同的方法再次连接到不同的uri
ajax1.0
btn.onclick = function(){
    var xhr = new XMLHttpRequest();
    xhr.open('get','1.php?a=12&b=6',true); // 异步
    xhr.send();
    xhr.onreadystatechange = function(){
        if(xhr.readyState === 4){
            console.log(xhr.status)
            if((xhr.status>=200 && xhr.status<300)||xhr.status === 304){
                console.log(xhr.responseText)
            }
        }else{
            alert('error')
        }
    }
}
ajax2.0

FormData对象用以将数据编译成键值对,append()方法用来添加字段。一般写原生js请求的时候可以使用FormData上传文件。

  • upload 上传过程
  • onload 成功完成时触发
  • onprogress 接收数据开始周期触发
btn.onclick = function(){
    var formData = new FormData();    // 容器
    formData.set('a',12);
    formData.set('b',1);
    formData.append('a',5)
    formData.set('fileName',idFile) // 文件

    var xhr = new XMLHttpRquest();

    xhr.upload.onload = function(){
        console.log('上传完成')
    }
    xhr.upload.onprogress = function(ev){   //进度变化
        console.log(ev.loaded, ev.total)
    }

    xhr.open('post','1.php?a=12&b=6',true); // post
    xhr.send(formData);
    xhr.onreadystatechange = function(){
        if(xhr.readyState === 4){
            console.log(xhr.status)
            if((xhr.status>=200 && xhr.status<300)||xhr.status === 304){
                console.log(xhr.responseText)
            }
        }else{
            alert('error')
        }
    }
}

<input type="file" name="fileName" id="XXX">
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值