纯粹http请求,发挥类似ajax的效果

Posted 泽泽生龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了纯粹http请求,发挥类似ajax的效果相关的知识,希望对你有一定的参考价值。

post请求: 

      

 var postData = {
    "username": "13321503898",
    "password": "a123456",
    "imsi":"123455677"
    };
     
     
    var xhr = new XMLHttpRequest();
     
    xhr.open("POST", "http://139.199.156.43:9999/LK/login/loginByUsername", true);
    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xhr.onreadystatechange = function(){
        
        var XMLHttpReq = xhr;
        /**
            XMLHttpReq.readyState
         0: 请求未初始化
         1: 服务器连接已建立
         2: 请求已接收
         3: 请求处理中
         4: 请求已完成,且响应已就绪
        **/
        if (XMLHttpReq.readyState == 4) {
            if (XMLHttpReq.status == 200) {                
                var data = XMLHttpReq.responseText;
                alert(data)
                console.log(data);
                var json = JSON.parse(JSON.parse(data));
            }else if(XMLHttpReq.status == 100){
            
            }else if(XMLHttpReq.status == 300){
            
            }else if(XMLHttpReq.status == 400){
            
            }else if(XMLHttpReq.status == 500){
            
            }else if(XMLHttpReq.status == 0){
                /** 0不是http协议的状态,关于XMLHttpReq.status的说明:
                1、If the state is UNSENT or OPENED, return 0.(如果状态是UNSENT或者OPENED,返回0)
                2、If the error flag is set, return 0.(如果错误标签被设置,返回0)
                3、Return the HTTP status code.(返回HTTP状态码)
                第一种情况,例如:url请求的是本地文件,状态会是0
                第二种情况经常出现在跨域请求中,比如url不是本身网站IP或域名,例如请求www.baidu.com时
                第三种,正常请求本站http协议信息时,正常返回http协议状态值
                **/
            }
            
        }
    };
    xhr.send(JSON.stringify(postData));


如果是get请求,将请求方式换成 get,send()方法中的data不需转换成字符串,用法和ajax类似,ajax将http请求重新封装了

以上是关于纯粹http请求,发挥类似ajax的效果的主要内容,如果未能解决你的问题,请参考以下文章

QtWebkit:如何跟踪/修改 HTTP 请求?

前端面试题之手写promise

我可以用 Angular 实现半实时效果吗?

Ajax全局加载框(Loading效果)的配置

一款基于jQuery Ajax的等待效果

jQuery Ajax进度条效果