ajax

作者: 小囧兔 | 来源:发表于2017-06-21 23:20 被阅读0次

    ajax 是什么?有什么作用?

    AJAX即“Asynchronous JavaScript and XML”,异步传输+js+xml,
    使用Ajax技术不必刷新整个页面,只需对页面的局部进行刷新,可以节省网络带宽,提高页面的加载速度,从而缩短用户等待时间,改善用户体验。

    前后端开发联调需要注意哪些事情?后端接口完成前如何 mock 数据?

    注意事项:
    1.确定接口信息
    2.确定前端要以什么方式提交数据到服务器,约定数据格式,数据类型
    3.确定要请求的参数
    如何mock数据
    1.手动模拟,把数据写死
    在调用接口的时候,不请求接口,直接返回想要的数据,但是在后端联调的时候需要把数据删除。
    2.可以使用的 Mock Server
    当后端 接口文档没有编写完成时,前端无法进行调试,这就导致了前端会被后端阻塞的情况。而 Mock Server 是相当于构建假数据,然后把这些假数据存到 JSON 文件上,Mock Server 可以响应请求或者生成页面

    点击按钮,使用 ajax 获取数据,如何在数据到来之前防止重复点击?

     var reqLock=false;//默认是解锁状态
        function ajax(){
            if(reqLock===true){
                return;
            }else {
                reqLock=true;//上锁
                //ajax请求
                 function isOK(){
                       //...
                     reqLock===false;
                 }
                function error(){
                    //...
                    reqLock===false;
                }
            }
        }
    

    实现加载更多的功能,后端在本地使用server-mock来模拟数据

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                padding: 0;
                 margin: 0;
            }
            ul li {list-style: none}
            a{
                text-decoration: none;
                color: #ff00ff;
            }
            .outer{
                text-align: center;
                width: 600px;
                margin: 0 auto;
            }
             .wrap>li{
                 border: 1px solid #ddd;
                 text-align: center;
                 line-height: 2;
                 margin-bottom: 10px;
             }
            .wrap>li:hover{
                background: #ddd;
            }
            #btn{
                display: inline-block;
                padding: 8px 20px ;
                color: #fff;
                background: #0000ff;
                border-radius: 4px;
            }
    
        </style>
    </head>
    <body>
    <div class="outer">
        <ul class="wrap">
    
        </ul>
        <a href="javascript:;" id="btn">加载更多</a>
    </div>
    
    </body>
    <script>
        var wrap=document.querySelector(".wrap");
        var btn=document.querySelector("#btn");
        var pageIndex=0;
        var lock=0;//默认解锁
        btn.addEventListener('click',function(e){
            e.preventDefault();//阻止默认事件
            var xhr=new XMLHttpRequest();
            console.log(1);
            xhr.onreadystatechange=function(){
                        if(!lock){
                           return;
                       }
                if(xhr.readyState==4){
                    if(xhr.status==200||xhr==304){
                        var res=JSON.parse(xhr.responseText);
                        var fragment=document.createDocumentFragment();
                        for(var i=0;i<res.length;i++){
                            var lis=document.createElement("li");
                            lis.innerText=res[i];
                            fragment.appendChild(lis);
                        }
                        wrap.appendChild(fragment);
                        pageIndex=pageIndex+5;
                    }else{
                        console.log("出错了");
                    }
                    lock=1;
                }
            };
            xhr.open('get','/loadMore?index='+pageIndex+'&length=5',true);
            xhr.send();
            lock=1;
        });
    
    </script>
    </html>
    

    router.js

    app.get('/loadMore',function(req,res){
       var index=req.query.index;
        var len=req.query.length;
        var data=[];
        for(var i=0;i<len;i++){
            data.push('新闻'+(parseInt(index)+i));
        }
          res.send(data);
    });
    

    相关文章

      网友评论

          本文标题:ajax

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