美文网首页
ajax作业

ajax作业

作者: 饥人谷_罗丹 | 来源:发表于2017-07-21 23:36 被阅读0次

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

    概念:ajax是一种技术的泛称,它依赖的是现有的CSS/HTML/Javascript,而其中最核心的依赖是浏览器提供的XMLHttpRequest对象,是这个对象使得浏览器在不刷新页面的情况下向服务器发出HTTP请求与接收HTTP响应。

    作用:在不从新加载整个页面的情况下,与服务器交换数据并更新部分网页。

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

    前后端联调需要注意:

    1. 约定好接口的参数,格式,数据,接口地址,传递方式,回传数据的内容类型。
    2. 讨论好接口方式后,由双方确定是否可行,在开发。
    

    如何mock数据:

    可以通过安装server-mock的方法来搭建web服务器,模拟网站后端。
    1. 安装
     - 下载nodejs(如果安装可以忽略)
     - 打开终端(Windows用户打开GitBash)
     - 执行     npm install -g server-mock
    
     - 如果安装太慢也可以执行   npm install -g server-mock -- registry=https://registry.npm.taobao.org
    
    2. 使用
        1. 搭建web服务器
        - 在终端cd到的文件夹所在的文件夹
        - 执行 mock start 可以将当前文件路径作为根目录启动一个web服务器
        - 在浏览器输入 http://localhost:8080/xxx.html
    
        2. mock数据
        - 在终端cd到你的文件夹所在的文件夹
        - 在当前文件创建 router.js, 该文件是就收并处理后端请求文件(可以理解为网站后端)
        - mock init 可以创建范例文件.  
    

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

    点击按钮后添加一个disable属性就好,在数据完成时删掉这个disable属性。

    <input id = "clickButton" type = "button" name = "button" value = "button">
    
    var buttonNode = document.getElementById('clickButton');
    var islocking = true;
        buttonNode.addEventListener('click', function (e) {
            if (!islocking) {
                return;
            }
        var xhr = new XMLHttpRequest();
            xhr.onreadystatechange = function () {
                if ( XMLHttpRequest.readyState === 4 ){
                    if (xhr.status === 200 || xhr.status ===304) {
                        console.log('成功');
                    } else {
                        console.log(xhr.status);
                    }
                        islocking = true;
                }
         };
    
            xhr.open( 'get' , "/server?index=0$length=5" , true);
            xhr.send();
            islocking = false
     });
    
    

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

    前端部分
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>加载更多</title>
        <style>
          body,
          ul,
          li,
          a {
              margin: 0;
              padding: 0;
          }
    
          ul,
          li {
              list-style: none;
          }
            
          a {
              text-decoration: none;
          }
    
          #load-more {
              display: block;
              margin: 30px auto 0 auto;
              text-align: center;
              cursor: pointer;
          }
          
          #ct li {
              margin: 10px 20px;
              padding: 10px;
              background: #ccc;
              border-radius: 4px;
              cursor: pointer;
          }
    
          .btn {
              height: 40px;
              line-height: 40px;
              width: 160px;
              background: orange;
              border-radius: 4px;
              color: #333;
          }
    
          .btn:hover {
              background: #c78;
              color: #000;
          }
    
    
        </style>
    </head>
    <body>
        <ul id="ct">
        </ul>
        <a href="#" class="btn" id="load-more">
          加载更多
        </a>
        
        <script>    
            var btn = document.querySelector('#load-more');
            var ct = document.querySelector('#ct');
            var curIndex = 0;
            var islocking = true;
    
            btn.addEventListener('click', function(e){
                e.preventDefault();
                
                if (!islocking) {
                    return;
                }
                
                var xhr = new XMLHttpRequest();
                xhr.onreadystatechange = function(){
                    if(xhr.readyState === 4) {
                        if (xhr.status === 200 || xhr.status === 304) {
                            var results = JSON.parse(xhr.responseText);
                            var fragment = document.createDocumentFragment();
                            for(var i = 0 ; i < results.length; i++) {
                                var node = document.createElement('li');
                                node.innerText = results[i];
                                fragment.appendChild(node);
                            }
                            ct.appendChild(fragment);
                            
                            curIndex += 5;
                            
                        } else {
                            alert('出错了');
                        }
                        islocking = true;
                    }
                }
                xhr.open('get', '/loadMore?index='+curIndex+'&length=5' ,true);
                xhr.send();
                isload = false;
            });
        </script>
    </body>
    </html>
    
    服务器部分
    app.get('/loadMore' , function(req, res){
       var curIndex= req.query.index;
       var len = req.query.length;
       var data = [];
    
       for(var i = 0; i < len; i++) {
           data.push('新闻'+(parseInt(curIndex) + i));
       }
    
       res.send(data);
    
    });
    
    加载更多

    相关文章

      网友评论

          本文标题:ajax作业

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