Ajax

作者: 黑色的五叶草 | 来源:发表于2018-02-21 15:38 被阅读0次

    Ajax 是什么?有什么作用?

    • XML 被设计用来传输和存储数据,其焦点是数据的内容(旨在传输信息)。HTML 被设计用来显示数据,其焦点是数据的外观(旨在显示信息)。
      XML 是独立于软件和硬件的信息传输工具。
    • Ajax是Asynchronous JavaScript And XML的缩写,即异步的JavaScript和XML。
      这一技术能够向服务器请求额外的数据,而不是卸载整个页面。
      HTTP请求流程如下:
      1.浏览器向服务器发送请求;
      2.服务器接受请求并生成response;
      3.服务器将response返回给浏览器;
      4.浏览器刷新整个页面来显示新的数据;
      整个请求流程是同步的,顺序执行的。
      而Ajax是一部执行的,就是脱离当前的页面请求、加载等单独执行,通过JavaScript单独发送请求,获得服务器返回的新数据,通过操作DOM改变页面局部内容,而不会重新加载整个页面,带来良好的用户体验
      Ajax的get || post:
      • 与post相比,get更简单也更快,并且在大部分浏览器下都能用,然而在一下情况中,应当使用post请求:
        1. 无法使用缓存文件(更新服务器上的文件或数据库)
        2. 向服务器发送大量数据(post没有数据量限制)
        3. 发送包含位置字符的用户输入时,post比get更稳定也更可靠

    基础示例:

    <div id="mydiv">你的名字</div>
    <button id="btn">修改内容</button>
    
    
    <script type="text/javascript" language="javascript">
        document.getElementById('btn').addEventListener('click', function () {
            var XMLHttp = new XMLHttpRequest();
            XMLHttp.onreadystatechange = function () {
                if (XMLHttp.readyState === 4 && XMLHttp.status === 200) {
                    dealwith();
                }
            }
    
            XMLHttp.open('GET', './text.php', true);
            XMLHttp.send();
        })
    
        function dealwith() {
            document.getElementById('mydiv').innerHTML = XMLHttp.responseText;
        }
    

    AJAX封装

        document.querySelector('#btn').addEventListener('click', function(){
            ajax({
                url: '/login',   //接口地址
                type: 'get',               // 类型, post 或者 get,
                data: {
                    username: 'xiaoming',
                    password: 'abcd1234'
                },
                success: function(ret){
                    console.log(ret);       // {status: 0}
                },
                error: function(){
                   console.log('出错了')
                }
            })
        });
    
            function ajax(opts){
                var xhr = new XMLHttpRequest();
                xhr.onreadystatechange = function(){
                    if(xhr.readyState === 4 && xhr.status === 200){
                        var aa = JSON.parse(xmlhttp.responseText);
                        opts.success(aa);
                    }else if(xhr.readyState === 4 && xhr.status !== 200){
                        opts.error();
                    }
                }
    
                var dataStr = '';
                for(var key in opts.data){
                    dataStr = dataStr + key + '=' + opts.data[key] + '&'
                }
                dataStr = dataStr.substring(0, dataStr.length-1)
                
                if(opts.type.toLowerCase() === 'get'){
                    xhr.open(opts.type, opts.url + '?' + dataStr, true);
                    xhr.send();
                }
                if(opts.type.toLowerCase() === 'post'){
                    xhr.open(opts.type, opts.url, true);
                    xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
                    xhr.send(dataStr);
                }
            }
    

    相关文章

      网友评论

          本文标题:Ajax

          本文链接:https://www.haomeiwen.com/subject/woshtftx.html