zoukankan      html  css  js  c++  java
  • 一、原生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>
  • 相关阅读:
    HDFS入门详解
    Linux find example
    你想建设一个能承受500万PV/每天的网站吗?服务器每秒要处理多少个请求才能应对?
    find 与 tar命令连用
    莫名其妙的主机名 VM_32_234_centos
    hadoop Safe mode is ON 的解决办法
    Does not contain a valid host:port authority: Master:8031 (configuration property 'yarn.resourcemanager.resource-tracker.address')
    Equals 和 == 的区别--转
    线程间操作无效: 从不是创建控件的线程访问它。
    C# EventHandler委托事件小结--百度
  • 原文地址:https://www.cnblogs.com/yexiangwang/p/5060731.html
Copyright © 2011-2022 走看看