Ajax学习笔记(二):图书管理案例

1.查看接口文档

### 请求的根路径

> http://www.liulongbin.top:3006


### 图书列表

+ 接口URL:  /api/getbooks
+ 调用方式: GET
+ 参数格式:

| 参数名称  | 参数类型 | 是否必选 | 参数说明 |
| --------- | -------- | -------- | -------- |
| id        | Number   | 否       | 图书Id   |
| bookname  | String   | 否       | 图书名称 |
| author    | String   | 否       | 作者     |
| publisher | String   | 否       | 出版社   |

+ 响应格式:

| 数据名称   | 数据类型 | 说明                     |
| ---------- | -------- | ------------------------ |
| status     | Number   | 200 成功;500 失败;     |
| msg        | String   | 对 status 字段的详细说明 |
| data       | Array    | 图书列表                 |
| +id        | Number   | 图书Id                   |
| +bookname  | String   | 图书名称                 |
| +author    | String   | 作者                     |
| +publisher | String   | 出版社                   |

+ 返回示例:

```json
{
  "status": 200,
  "msg": "获取图书列表成功",
  "data": [
    { "id": 1, "bookname": "西游记", "author": "吴承恩", "publisher": "北京图书出版社" },
    { "id": 2, "bookname": "红楼梦", "author": "曹雪芹", "publisher": "上海图书出版社" },
    { "id": 3, "bookname": "三国演义", "author": "罗贯中", "publisher": "北京图书出版社" }
  ]
}

```


### 添加图书

+ 接口URL:  /api/addbook
+ 调用方式: POST
+ 参数格式:

| 参数名称  | 参数类型 | 是否必选 | 参数说明 |
| --------- | -------- | -------- | -------- |
| bookname  | String   | 是       | 图书名称 |
| author    | String   | 是       | 作者     |
| publisher | String   | 是       | 出版社   |

+ 响应格式:

| 数据名称 | 数据类型 | 说明                         |
| -------- | -------- | ---------------------------- |
| status   | Number   | 201 添加成功;500 添加失败; |
| msg      | String   | 对 status 字段的详细说明     |

+ 返回示例:

```json
{
    "status": 201,
    "msg": "添加图书成功"
}
```


### 删除图书

+ 接口URL:  /api/delbook
+ 调用方式: GET
+ 参数格式:

| 参数名称 | 参数类型 | 是否必选 | 参数说明 |
| -------- | -------- | -------- | -------- |
| id       | Number   | 是       | 图书Id   |

+ 响应格式:

| 数据名称 | 数据类型 | 说明                                                         |
| -------- | -------- | ------------------------------------------------------------ |
| status   | Number   | 200 删除成功;500 未指定要删除的图书Id;501 执行Sql报错;502 要删除的图书不存在; |
| msg      | String   | 对 status 字段的详细说明                                     |

+ 返回示例:

```json
{
    "status": 200,
    "msg": "删除图书成功!"
}
```

2.渲染图书列表(get)

get图书接口文档:
### 图书列表

+ 接口URL:  /api/getbooks
+ 调用方式: GET
+ 参数格式:

| 参数名称  | 参数类型 | 是否必选 | 参数说明 |
| --------- | -------- | -------- | -------- |
| id        | Number   | 否       | 图书Id   |
| bookname  | String   | 否       | 图书名称 |
| author    | String   | 否       | 作者     |
| publisher | String   | 否       | 出版社   |

+ 响应格式:

| 数据名称   | 数据类型 | 说明                     |
| ---------- | -------- | ------------------------ |
| status     | Number   | 200 成功;500 失败;     |
| msg        | String   | 对 status 字段的详细说明 |
| data       | Array    | 图书列表                 |
| +id        | Number   | 图书Id                   |
| +bookname  | String   | 图书名称                 |
| +author    | String   | 作者                     |
| +publisher | String   | 出版社                   |

+ 返回示例:

```json
{
  "status": 200,
  "msg": "获取图书列表成功",
  "data": [
    { "id": 1, "bookname": "西游记", "author": "吴承恩", "publisher": "北京图书出版社" },
    { "id": 2, "bookname": "红楼梦", "author": "曹雪芹", "publisher": "上海图书出版社" },
    { "id": 3, "bookname": "三国演义", "author": "罗贯中", "publisher": "北京图书出版社" }
  ]
}

```

function getBookList() {
            // 发起ajax请求获取图书列表数据 先选择根路径,再选择相应的接口url
             $.get('http://www.liulongbin.top:3006/api/getbooks', function(res) {
                // 查看获取列表数据是否成功?
                if (res.status !== 200) return alert('获取数据失败!')
                // 如果获取数据成功 则要将数据渲染页面结构
                var rows = []
                                // 第二个item.id是为了给每一个删除绑定相应的id值
                $.each(res.data, function(i, item) {
                    rows.push('<tr><td>' + item.id + '</td><td>' + item.bookname + '</td><td>' + item.author + '</td><td>' + item.publisher +
                        '</td><td><a href="javascript:;" class="del" data-id="' + item.id + '">删除</a></td></tr>')
                })
                // 先清除tbody中的所有元素 然后再在tbody中追加rows里面的元素就可以形成表格
                $('#tb').empty().append(rows.join(''));
            })
        }
        getBookList();

3.删除图书(delete)

删除图书接口文档:
### 删除图书

+ 接口URL:  /api/delbook
+ 调用方式: GET
+ 参数格式:

| 参数名称 | 参数类型 | 是否必选 | 参数说明 |
| -------- | -------- | -------- | -------- |
| id       | Number   | 是       | 图书Id   |

+ 响应格式:

| 数据名称 | 数据类型 | 说明                                                         |
| -------- | -------- | ------------------------------------------------------------ |
| status   | Number   | 200 删除成功;500 未指定要删除的图书Id;501 执行Sql报错;502 要删除的图书不存在; |
| msg      | String   | 对 status 字段的详细说明                                     |

+ 返回示例:

```json
{
    "status": 200,
    "msg": "删除图书成功!"
}
```


// 删除操作不能这么写 因为我们是动态的追加元素,当时还未出现.del 所以要用事件委托来做
/* $('.del').on('click', function () {
     console.log('ok')}) 
*/


// 通过代理的方式为动态添加的元素绑定点击事件
$('tbody').on('click', '.del', function() {
    // attr() 方法设置或返回被选元素的属性值。
    var del_id = $(this).attr('data-id');
    $.get("http://www.liulongbin.top:3006/api/delbook", {
        id: del_id
    }, function(res) {
        if (res.status !== 200)
            return alert('删除图书失败!')
        else {
            // 如果没有删除失败就证明成功 重新渲染一下图书列表
            getBookList()
        }
    })
})

4.添加图书(post)

post图书文档接口:
### 添加图书

+ 接口URL:  /api/addbook
+ 调用方式: POST
+ 参数格式:

| 参数名称  | 参数类型 | 是否必选 | 参数说明 |
| --------- | -------- | -------- | -------- |
| bookname  | String   | 是       | 图书名称 |
| author    | String   | 是       | 作者     |
| publisher | String   | 是       | 出版社   |

+ 响应格式:

| 数据名称 | 数据类型 | 说明                         |
| -------- | -------- | ---------------------------- |
| status   | Number   | 201 添加成功;500 添加失败; |
| msg      | String   | 对 status 字段的详细说明     |

+ 返回示例:

```json
{
    "status": 201,
    "msg": "添加图书成功"
}


// 为添加button设置click事件
// 必须是文字 不能是数字!!!!
$('#btnAdd').on('click', function() {
    // val() 方法返回或设置被选元素的值 有参数就是设置 没有参数就是返回相应的值
    // trim() 方法可以去除字符串两端的空格 如果写上了空格也不会算上一个字符
    var bookname = $('#iptBookname').val().trim()
    var author = $('#iptAuthor').val().trim()
    var publisher = $('#iptPublisher').val().trim()
    // 如果其中有一个为空 则要提示用户
    if (bookname.length <= 0 || author.length <= 0 || publisher.length <= 0) {
        return alert('请填写完整的图书信息!')
    }

    $.post('http://www.liulongbin.top:3006/api/addbook', {
        bookname: bookname,
        author: author,
        publisher: publisher
    }, function(res) {
        if (res.status !== 201)
            return alert('添加图书失败!')
        else {
            getBookList()
        }
        // 将三个input框中的文字清空 可以直接设置为空
        $('#iptBookname').val('')
        $('#iptAuthor').val('')
        $('#iptPublisher').val('')
    })
})

5.html的设计(引用了jquery.js和bootstrap.css)

 <!-- 添加图书的Panel面板 -->
    <div class="panel panel-primary">
        <div class="panel-heading">
            <h3 class="panel-title">添加新图书</h3>
        </div>
        <div class="panel-body form-inline">

            <div class="input-group">
                <div class="input-group-addon">书名</div>
                <input type="text" class="form-control" id="iptBookname" placeholder="请输入书名">
            </div>

            <div class="input-group">
                <div class="input-group-addon">作者</div>
                <input type="text" class="form-control" id="iptAuthor" placeholder="请输入作者">
            </div>

            <div class="input-group">
                <div class="input-group-addon">出版社</div>
                <input type="text" class="form-control" id="iptPublisher" placeholder="请输入出版社">
            </div>

            <button id="btnAdd" class="btn btn-primary">添加</button>

        </div>
    </div>


    <!-- 图书的表格 -->
    <table class="table table-bordered table-hover">
        <thead>
            <tr>
                <th>Id</th>
                <th>书名</th>
                <th>作者</th>
                <th>出版社</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody id="tb"></tbody>
    </table>


全部评论

相关推荐

震撼沃玛一整年:查看图片
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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