进阶12

作者: 安石0 | 来源:发表于2017-06-18 21:49 被阅读0次

    题目1: ajax 是什么?有什么作用?

    Ajax的英文全称是Asynchronous JavaScript and XML,异步的javascript和xml,是一种与服务器交互数据的方法;
    作用:可以在不需要重载页面的情况请求数据,带来了更好的用户体验

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

    注意事项

    • 约定数据:有哪些需要传输的数据,数据类型是什么;
    • 约定接口:确定接口名称及请求和响应的格式,请求的参数名称、响应的数据格式;
    • 根据这些约定整理成接口文档
      如何mock数据,
    • 可以根据接口文档,使用假数据来验证我们制作的页面响应和接口是否正常。
    • 可以用xamp进行模拟
    • 也可使用server-mock

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

    1:设置一个变量,初始值为false,表示没有加载过数据,

    tn.addEventListener('click',function(){
            if(!boo){
                if(num<5){
                var url='page'+num+'.json'
       setAjax(url)
       boo=true;
       num++;
                }else{
                    alert('没有更多新闻啦!')
                }
    }else{
        console.log('请勿多次点击')
    }
        })
    

    然后在ajax函数里面设置当数据加载成功时将boo设为false;
    2可直接设置btn的disabled属性,当第一次点击后将其设置为true,这样做用户体验更好。也可以将1,2结合

    题目4:实现加载更多的功能,效果范例245,后端在本地使用server-mock来模拟数据

    github地址

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>ajax</title>
      <style type="text/css">
    li{
        border: 1px solid;
    }
     div{
        border: 1px solid;
     }
     </style>
    </head>
    <body>
      
      <div id="div1">
        <li>新闻01</li>
        <li>新闻02</li>
      </div>
      <button id='btn'>加载</button>
       <script type="text/javascript">
        //封装ajax
        function setAjax(url){
        var x;
                var xhr=new XMLHttpRequest();
                xhr.onreadystatechange=function(){
                    if(xhr.readyState==4){
                        if(xhr.status=200||xhr.status==304){
                            var x=xhr.responseText;
                            x=JSON.parse(x);
              
                            var newAll=document.createDocumentFragment()
                            for(var i=0;i<x.length;i++){
                                var newLi=document.createElement('li')
                                newAll.appendChild(newLi)
                            newLi.innerText=x[i];   
                            }
                            
                            setTimeout(function(){
                                    div1.appendChild(newAll)
                                    boo=false;
                            },2000)
                        
                        }else{
                            document.write('请求失败'+xhr.status)
                        }
                    }
                }
        xhr.open('GET',url,true);
        xhr.send(null)
    
        }
       var div1=document.getElementById('div1');
        var btn=document.getElementById('btn');
        var boo=false;//是否正在加载?
        var num=1;//控制加载的内容1-4
        btn.addEventListener('click',function(){
            if(!boo){
                if(num<5){
                var url='page'+num+'.json'
       setAjax(url)
       boo=true;
       num++;
                }else{
                    alert('没有更多新闻啦!')
                }
    }else{
        console.log('请勿多次点击')
    }
        })
       </script>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:进阶12

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