Ajax请求服务器

188 阅读2分钟

1请求基本步骤(带参传入)

    function getDate (parms){
        //1.创建请求
        let xhr = new XMLHttpRequest();
        //2.连接服务器
        xhr.open("GET","http://localhost:4000?name="+parms,true)
        //3.监听返回值
        xhr.onreadystatechange = function(){
            if(this.readyState==4&&this.status == 200){
                showDate(this.responseText)
            }
        }
        //4.发送
        xhr.send();

2.方法解析

new XMLHttpRequset(); 创建请求

open(method,url,async)  配置网络请求
method:方法   GET  POST
url:    服务器地址
async:  是否异步    true   false

xhr.send()发送
[使用post send带参](https://blog.csdn.net/weixin_40292626/article/details/78708160)

3.属性

readyState 
status 状态码
[状态码](https://baike.sogou.com/v73030114.htm?fromTitle=%E7%8A%B6%E6%80%81%E7%A0%81)

4.事件

当请求被发送到服务器时,我们需要执行一些基于响应的任务。
onreadystatechange事件  :   每当 readyState 改变时,就会触发 onreadystatechange 事件。

5.get与post的不同

总结:一般使用get方式向服务器索取数据,使用post方式向服务器提交数据

//2.get请求和post的请求的不同:
http://www.test.com:9000
1)安全性:
post更安全
2)
get请求向后台传递数据,是在地址栏中传输的
例如:
http://www.test.com:9000?username=lucy&pwd=123242
post是在请求体中传输数据的
3)传递的数据大小
get请求传递的数据大小是有限制的
post 理论上是不限制大小

6.取出查询参数

    let str="http://127.0.0.1:9000?username=jack&pwd=123&tel=211423423";
    // let str="http://127.0.0.1:9000?username=jack";
    //通过?将字符串分割
    let s=str.split('?')[1];
    let obj={}
    if(s.indexOf('&')==-1){     //一个参数
        let arr=s.split('=')
        obj[arr[0]]=arr[1];
    }else{//多个
        let arr=s.split('&');
        arr.forEach(item=>{
            // console.log(item);
            //分割字符串  key=value,填充到对象内部
            let arr0=item.split('=');
            obj[arr0[0]]=arr0[1];
        });
    }

7.例题根据相关书名查询书籍

<body>
    <label for="">名字</label><input type="text"> <button>搜索</button>
    <ul></ul>
    <script src="./jquery.js"></script>
    <script>
        let oUl=document.querySelector('ul');
        // let parm = document.querySelector('input')
        document.querySelector('button').onclick = function(){
            //清空oul子级
            $('ul').empty()
            let parm = document.querySelector('input').value
            getDate(parm);
        }
        function getDate (parms){
            //1.创建请求
            let xhr = new XMLHttpRequest();
            //2.连接服务器
            xhr.open("GET","http://localhost:4000?name="+parms,true)
            //3.监听返回值
            xhr.onreadystatechange = function(){
                if(this.readyState==4&&this.status == 200){
                    showDate(this.responseText)
                }
            }
            //4.发送
            xhr.send();

        }
        function showDate (cnt){
            let {data:arr} = JSON.parse(cnt)
            console.log(arr)
            arr.forEach(item => {
                let li = document.createElement('li')
                li.innerText = item.name;
                oUl.appendChild(li);
            });
        }
    </script>
</body>

8.以前错过知识点 oninput事件

oninput与onchange