一、原生js,ajax

1、创建一个函数:createXhr

 

或者

 

2、Ajax对象的相关属性和方法


相关方法:

open(method,url[,async])
初始化Ajax对象
method:请求方式 主要有两种:get和post
url:请求地址
[async]:是否异步请求 主要有个值:true和false 默认:true
lsetRequestHeader(header,value)
设置请求头信息
header:请求头
value:请求头信息
lsend(content)
发送请求,只有执行到ajax对象的send方法时,才会真正发送请求
content:参数,如果是get请求,这里直接写null

相关属性:

readyState :状态码

Ajax对象从创建到初始化到发送请求到接收数据时,它的状态码会发生改变
0:表示对象已建立,但未初始化
1:表示对象已初始化,但未发送
2:已调用send方法进行请求
3:正在接收数据(接收到一部分)
4:接收完成

onreadystatechange :当Ajax对象的状态码发生改变时所触发的回调函数
status :http的响应状态码
statusText :http的响应状态文本
reponseText :服务器端返回的数据(字符串形式)
responseXML :服务器端返回的数据(xml形式)

如果服务器返回的是普通字符串,使用responseText属性进行取值
如果服务器返回的是xml文档数据,使用responseXML属性进行取值

3、解决get缓存方法

  一,客户端

<script>
    var xhr;
    window.onload = function() {

        //绑定失去焦点事件
        $('username').onblur = function() {
            //获取用户名
            var username = $('username').value;
            //生成url

            //随机数
            //var url = 'demo05.php?username=' + username+'&_='+Math.random(); 解决缓存方法,大量缓存文件,可能重复

            //时间戳
            //var url = 'demo05.php?username=' + username+'&_='+new Date().getTime();解决缓存方法,大量缓存文件不重复

            var url = 'demo05.php?username=' + username;
            //创建对象
            xhr = createXhr();
            //初始化对象
            xhr.open('get', url);
            //设置请求头信息
            //xhr.setRequestHeader("If-Modified-Since", "0");解决缓存方法,只有一个缓存文件
            //设置回调函数
            xhr.onreadystatechange = display;
            //发送请求
            xhr.send(null);

        };
    };

    function display() {
        //当状态码为4,响应状态码为200时
        if (xhr.readyState == 4 && xhr.status == 200) {
            //用户名已被使用
            if (xhr.responseText == 1) {
                $('result').innerHTML = '<font color=red>用户名已被占用!</font>';
            } else {
                $('result').innerHTML = '<font color=green>用户名可以使用!</font>';
            }
        }
    }
</script>

二、服务器端:禁用缓存

header("Cache-Control: no-cache, must-revalidate"); header功能:向http响应头中写数据

4,post与get请求

一、 getpost的区别

get是将参数附加到url的后面

post是将参数放在请求空白行的后面

get请求传参最大大小:2k

post请求传参最大大小:无限制 ,一般服务器会做限制

get只能传输字符串数据

post可以传输字符串和二进制数据

二、请求头设计

xhr.setRequestHeader(‘content-type’,’application/x-www-form-urlencoded’);

<script>
    window.onload = function() {
        //绑定点击事件
        $('btnOk').onclick = function() {
            var username = $('username').value;
            var password = $('password').value;
            var data = 'username=' + username + '&password=' + password;
            var xhr = createXhr();
            xhr.open('post', 'demo08.php');
            xhr.setRequestHeader('Content-Type',
                    'application/x-www-form-urlencoded');
            xhr.onreadystatechange = function() {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    if (xhr.responseText == 'ok') {
                        $('username').value = '';
                        $('password').value = '';
                        $('password2').value = '';
                        $('res').innerHTML = '录入成功';
                    }
                }
            };
            xhr.send(data);
        };
    };
</script>
原文地址:https://www.cnblogs.com/yexiangwang/p/5060731.html