jq day2

JSON

一种数据格式,广泛用于前后端数据交互

json文件扩展名是.json

特征:

​ 1.只有符号:{} [] “” : ,

​ 2.引号只能用双引号

​ 3.字符串用引号,数字和boolean不加引号;属性也要用引号

​ 4.json文件中不能写注释

  • 用json描述对象

    {
        "stuName": "张三",
        "stuSex": "男",
        "stuAge": 22
    }
    
  • 用json描述数组(列表)

    [
        {
            "stuName": "张三",
            "stuSex": "男",
            "stuAge": 22
        },{
            "stuName": "李四",
            "stuSex": "男",
            "stuAge": 22
        } 
    ]
    
  • 用json描述嵌套对象

    {
        "className":"计科一班",
        "grade":"2022",
        "studentList":[
            {
                "stuName": "李四",
                "stuSex": "男",
                "stuAge": 22
            }
        ],
        "classRoom":{
            "roomNum":808
        }
    }
    

json格式的字符串与js对象之间的转换

JSON.parse() : json字符串转js对象

JSON.stringify() : js对象转json字符串

// js对象的定义
let student = {} // 定义对象  js=>ts=>typtscript
student.name = "张三"
student.sex = '男'
student.age = 22
// student.getName = function(){
// 	return this.name
// }

console.log(student.name);
console.log(student);
// js对象转换为json字符串
console.log(JSON.stringify(student));

// json格式的字符串转换为js对象
let emp = JSON.parse('{"empName":"小王","empJob":"经理"}')
console.log(emp.empJob,emp.empName);

AJAX 异步请求

AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。

用于向后台发送异步请求,后台返回数据,主要返回JSON数据(也可以但会xml,text,html)

异步请求可以实现页面局部刷新

同步:排队执行,不存在线程不安全

异步:同时执行,有线程不安全的问题

jQuery的AJAX请求

  • get()

    第一个参数是请求的url;

    第二个参数是请求成功的回调函数,后台返回的数据在形参result里

$.get("test.json", (result) => {

})
  • post()

    第一个参数是请求的url

    第二个参数是提交的数据

    第三个参数是回调函数

    $.post('test.json',{
        name:"张三"
    },(ret)=>{
        debugger
    })
    
  • ajax()

    ajax()是一个总和方法,它可以实现上面的个体或post请求

    $.ajax({
        url:"test.json",
        type:"get",  //get或post,  不区分大小写
        dataType:"JSON"   ,//后台返回的数据格式, 不区分大小写
        data:{   // 提交的数据,如果没有数据提交,data参数可以省略
            name:"张三"
        },
        success: (ret) => {
            debugger
        }
    })
    

练习:

1.按照下表的结构写一个json文件,里面有多条数据

2.写一个页面,页面上放一个表格

3.在页面初始化是发送ajax请求,把返回的数据填充到表格

image-20230823154515329

book.json

[{
	"bookId": "1022",
	"bookName": "理想国",
	"bookAuthor": "柏拉图",
	"bookPrice": "1111.00",
	"bookDate": "2010-02-02 00:00:00",
	"bookNum": "520",
	"typeID": "2"
}, {
	"bookId": "1023",
	"bookName": "平凡的世界",
	"bookAuthor": "路遥",
	"bookPrice": "2222.00",
	"bookDate": "2010-02-03 00:00:00",
	"bookNum": "521",
	"typeID": "3"
}, {
	"bookId": "1024",
	"bookName": "百年孤独",
	"bookAuthor": "加西亚·马尔克斯",
	"bookPrice": "3333.00",
	"bookDate": "2010-02-04 00:00:00",
	"bookNum": "522",
	"typeID": "4"
}]

book.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>通过ajax获取数据填充到</title>
		<style type="text/css">
			table {
				width: 300px;
				border-collapse: collapse;
			}
			tr,
			td {
				border: 1px solid gray;
			}
			td {
				padding: 10px;
				width: 200px;
			}
		</style>
	</head>
	<body>
		<script src="./js/jquery-1.12.4.min.js"></script>
		<script type="text/javascript">
			$(document).ready(() => {
				$("body").append(`
				<table>
					<tr>
						<td>book_id</td>
						<td>book_name</td>
						<td>book_author</td>
						<td>book_price</td>
						<td>book_date</td>
						<td>book_num</td>
						<td>type_id</td>
					</tr>
				</table>`)

				// 请求数据
				$.ajax({
					url: "book.json",
					type: "GET",
					dataType: "JSON",
					success: (result) => {
						// 获取每一个对象
						result.forEach((book) => {
							$("table").append(`
							<tr>
								<td>${book.bookId}</td>
								<td>${book.bookName}</td>
								<td>${book.bookAuthor}</td>
								<td>${book.bookPrice}</td>
								<td>${book.bookDate}</td>
								<td>${book.bookNum}</td>
								<td>${book.typeID}</td>
							</tr>`)
						})
					}
				})
			})
		</script>
	</body>
</html>

Bootstrap

Bootstrap 是受欢迎的 HTML、CSS 和 JS 框架,是一套样式(组件)库,可以用它轻松实现比较美观的样式

官网:https://www.bootcss.com/

镜像:https://bootstrap.cn/

下载地址:https://v3.bootcss.com/getting-started/

通过 npm 进行安装

可以利用 npm 工具来安装 Bootstrap:

npm install bootstrap@3

常用样式

栅格系统

Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。

栅格系统用于通过一系列的行(row)与列(column)的组合来创建页面布局,你的内容就可以放入这些创建好的布局中。

image-20230920000836559

详细使用可参考官方文档

练习:

  1. 按下表写一个json列表
  2. 写一个表格,通过ajax请求数据,填充到表格
  3. 每一行后面有修改和删除按钮,点修改按钮在表单里显示当前行数据;点删除按钮删除当前行

image-20230824090236735

home.json

[
	{
		"deId":1,
		"dpPlandate":"2020-11-16 16:15:09",
		"dpPlancontent":"电话沟通",
		"dpExecase":"对方同意购买",
		"dpExedate":"2020-11-16 17:54:14",
		"dpExemanager":"小红",
		"scId":2
	},
	{
		"deId":2,
		"dpPlandate":"2020-11-16 16:24:07",
		"dpPlancontent":"计划明天上午企业拜访",
		"dpExecase":"对方同意购买",
		"dpExedate":"2020-11-16 17:42:16",
		"dpExemanager":"小红",
		"scId":3
	},
	{
		"deId":3,
		"dpPlandate":"2020-06-18 00:00:00",
		"dpPlancontent":"去学校拜访",
		"dpExecase":"",
		"dpExedate":"2020-06-16 00:00:00",
		"dpExemanager":"杜经理",
		"scId":5
	},
	{
		"deId":4,
		"dpPlandate":"2020-06-09 00:00:00",
		"dpPlancontent":"111111",
		"dpExecase":"xxxx",
		"dpExedate":"2020-06-17 00:00:00",
		"dpExemanager":"杜经理",
		"scId":5
	},
	{
		"deId":5,
		"dpPlandate":"2020-06-16 00:00:00",
		"dpPlancontent":"电话沟通",
		"dpExecase":"打电话谈一下",
		"dpExedate":"2020-06-17 00:00:00",
		"dpExemanager":"ddd",
		"scId":6
	}
]

home.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>通过ajax请求获取数据填充到表格</title>
		<style type="text/css">
			.tbl1 {
				width: 400px;
				height: 200px;
				margin: 0 auto 30px;
				border-collapse: collapse;
			}
			.tbl1 td {
				display: flex;
				justify-content: space-between;
			}
			.tbl2 {
				width: 1000px;
				border: 1px solid gray;
				border-collapse: collapse;
				margin: auto;
			}
			tr,td {
				
				border: 1px solid gray;
				padding: 10px;
			}
			.tbl1 input{
				width: 250px;
				height: 25px;
			}
		</style>
	</head>
	<body>
		<form>
			<table class="tbl1">
				<tr>
					<td>部门号:
						<select name="deId">
							<option value="1">1</option>
							<option value="2">2</option>
							<option value="3">3</option>
							<option value="4">4</option>
							<option value="5">5</option>
						</select>
					</td>
				</tr>
				<tr>
					<td>计划日期:
						<input type="text" name="dpPlandate" />
					</td>
				</tr>
				<tr>
					<td>计划内容:
						<input type="text" name="dpPlancontent" />
					</td>
				</tr>
				<tr>
					<td>执行情况:
						<input type="text" name="dpExecase" />
					</td>
				</tr>
				<tr>
					<td>执行日期:
						<input type="text" name="dpExedate" />
					</td>
				</tr>
				<tr>
					<td>执行管理者:
						<input type="text" name="dpExemanager" />
					</td>
				</tr>
				<tr>
					<td>sc_id:
						<input type="text" name="scId" />
					</td>
				</tr>
			</table>
		</form>
		<table class="tbl2">
			<tr style="background-color: lightgray;">
				<td>部门号</td>
				<td>计划日期</td>
				<td>计划内容</td>
				<td>执行情况</td>
				<td>执行日期</td>
				<td>执行管理者</td>
				<td>sc_id</td>
				<td></td>
			</tr>
		</table>
		<script src="./js/jquery-1.12.4.min.js"></script>
		<script type="text/javascript">
			// 通过ajax请求json数据
			$.ajax({
				url: "home.json",
				type: "GET",
				dataType: "JSON",
				success: (result) => {
					// 获取单个对象
					result.forEach((dp)=>{
						$(".tbl2").append(`
						<tr>
							<td>${dp.deId}</td>
							<td>${dp.dpPlandate}</td>
							<td>${dp.dpPlancontent}</td>
							<td>${dp.dpExecase}</td>
							<td>${dp.dpExedate}</td>
							<td>${dp.dpExemanager}</td>
							<td>${dp.scId}</td>
							<td>
								<input type="button" value="修改">
								<input type="button" value="删除">
							</td>
						</tr>`)	
					})
				}
			})
			
			// 通过事件冒泡机制处理点击按钮
			$(".tbl2").click((eventObject)=>{
				let btn = eventObject.target
				if(btn.value == "删除"){ // 删除
					if(confirm("确定删除?")){
						$(btn).parent().parent().remove()
					}
				}
				if(btn.value == "修改"){ // 修改
					let val = $(btn).parent().parent().children()
					let deId = val.eq(0).text()
					let dpPlandate = val.eq(1).text()
					let dpPlancontent =val.eq(2).text()
					let dpExecase = val.eq(3).text()
					let dpExedate =val.eq(4).text()
					let dpExemanager =val.eq(5).text()
					let scId =val.eq(6).text()
					// 输出信息到form表单(回写)
					$('.tbl1 select[name="deId"]').val(deId)
					$('.tbl1 input[name="dpPlandate"]').val(dpPlandate)
					$('.tbl1 input[name="dpPlancontent"]').val(dpPlancontent)
					$('.tbl1 input[name="dpExecase"]').val(dpExecase)
					$('.tbl1 input[name="dpExedate"]').val(dpExedate)
					$('.tbl1 input[name="dpExemanager"]').val(dpExemanager)
					$('.tbl1 input[name="scId"]').val(scId)
				}
			})
		</script>
	</body>
</html>

image-20230824225130127

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值