Ajax学习笔记(七):新闻列表案例

1.接口文档

### 新闻列表

+ 接口URL:  /api/news
+ 调用方式: GET
+ 参数格式:无
+ 响应格式:

| 数据名称  | 数据类型 | 说明                                         |
| --------- | -------- | -------------------------------------------- |
| status    | Number   | 200 获取新闻列表成功;500 获取新闻列表失败! |
| msg       | String   | 对 status 字段的详细说明                     |
| data      | Array    | 新闻列表数组                                 |
| +id       | Number   | 新闻Id                                       |
| +title    | String   | 新闻标题                                     |
| +source   | String   | 新闻来源                                     |
| +cmtcount | Number   | 评论数量                                     |
| +tags     | String   | 标签                                         |
| +img      | String   | 图片地址                                     |
| +time     | String   | 发表时间                                     |

+ 返回示例:

```json
{
    "status": 200,
    "msg": "获取新闻列表成功",
    "data": [
        {
            "id": 1,
            "title": "5G商用在即,三大运营商营收持续下降",
            "source": "新京报经济新闻",
            "cmtcount": 58,
            "tags": "三大运营商,中国移动,5G商用",
            "img": "/images/0.webp",
            "time": "2019-10-28T03:50:28.000Z"
        }
    ]
}
```
实现步骤:
  • 获取新闻数据
  • 定义template模板
  • 编译模板
  • 定义时间过滤器
  • 定义补零函数

2.代码

<div id="news-list">
    </div>
    <!-- 2.定义template模板 -->
    <script type="text/html" id="news">
        <!-- 对每一个item进行循环 -->
        {{each data}}
        <div class="news-item">
            <img class="thumb" src="{{'http://www.liulongbin.top:3006'+$value.img}}" alt="" />
            <div class="right-box">
                <h1 class="title">{{$value.title}}</h1>
                <div class="tags">
                    <!-- 对$value.tags进行循环 第一个$value是指data的value 第二个$value是指$value.tags的value -->
                    {{each $value.tags}}
                    <span>{{$value}}</span> {{/each}}
                </div>
                <div class="footer">
                    <div>
                        <span>{{$value.source}}</span>&nbsp;&nbsp;
                        <!-- 注意 这里用了时间过滤器 -->
                        <span>{{$value.time |dateFormat}}</span>
                    </div>
                    <span>评论数:{{$value.cmtcount}}</span>
                </div>
            </div>
        </div>
        {{/each}}
    </script>
    <script>
        getnews();
        // 1.获取新闻数据
        function getnews() {
            $.ajax({
                method: 'GET',
                url: "http://www.liulongbin.top:3006/api/news",
                data: {},
                success: function(res) {
                    if (res.status !== 200)
                        return alert("shibai");
                    console.log(res);
                    // "tags": "三大运营商,中国移动,5G商用",
                    // 3.1由于tags是一个字符串,所以对tags切割成数组
                    for (var i = 0; i < res.data.length; i++) {
                        // 把每一项tags属性 从字符串改造成字符串数组
                        res.data[i].tags = res.data[i].tags.split(",");
                    }
                    // 3.2定义时间过滤器dateFormat
                    template.defaults.imports.dateFormat = function(dtStr) {
                        var dt = new Date(dtStr);
                        var y = dt.getFullYear();
                        var m = zero(dt.getMonth() + 1);
                        var d = zero(dt.getDate());
                        var hh = zero(dt.getHours());
                        var mm = zero(dt.getMinutes());
                        var ss = zero(dt.getSeconds());
                        return y + '-' + m + '-' + d + ' ' + hh + ':' + mm + ':' + ss;
                    };
                    // 3.3定义一个补零函数
                    function zero(n) {
                        if (n < 10)
                            return '0' + n;
                        else
                            return n;

                    }
                    // 3.编译模板
                    var htmlstr = template("news", res);
                    // 4.利用dom操作 进行渲染HTML结构
                    $("#news-list").html(htmlstr);

                }
            })
        }
    </script>






























全部评论

相关推荐

虽然大家都在劝退读研,说读研以后也是打工,不如本科直接去打工,但随着现在研究生越来越多,很多企业招聘要求就会变成研究生起招,本科投递简历就会被卡,横向比较时也会因为"本科学历比不上研究生学历"被筛掉,而且你没发现劝退读研的基本都是读完研的人吗?而且进体制、国企等,研究生也比本科生升的快,他们拿着研究生文凭劝你一个本科生,可别当真了
球1个offer:每个行业都是不一定的,例如计算机开发岗,只要是92学历,完全可以冲互联网大厂,没进去抛开运气因素,就是不够努力,准备的晚没有实习等等。计算机算法岗还是要读研的,研究生是基本要求。现在太多人无脑考研了,因为本科秋招春招啥都没准备过,只能读研
点赞 评论 收藏
分享
点赞 评论 收藏
分享
05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务