<!DOCTYPE html>
<html>
<head>
<title>Matrix Calculation</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<meta charset="UTF-8">
<title>Jquery引入</title>
<!-- <script src="js/jquery-3.3.1.min.js" type="text/javascript" ></script>-->
<script type="text/javascript">
<!-- Jquery引入的测试 -->
$(function(){
alert("执行Jquery的语法成功");
})
</script>
<script>
$(document).ready(function() {
$('#matrix-form').on('submit', function(e) {
e.preventDefault(); // 阻止表单默认提交行为
// 获取用户输入的行数和列数
var rowCount = parseInt($('#row-count').val());
var colCount = parseInt($('#col-count').val());
console.log(rowCount)
// 构建动态表格
var tableHtml = `<table>`;
for (var i = 0; i < rowCount; i++) {
tableHtml += '<tr>';
for (var j = 0; j < colCount; j++) {
$('#col-count')
tableHtml += `<td><input type="text" name="matrix[${i}][${j}]}"></td>`;
// tableHtml += '<td><input type="text" name="matrix['+i+']['+j+']"></td>';
console.log("hala")
console.log(document.getElementsByName(`matrix[${i}][${j}]`));
console.log($('input[name="matrix[' + i + '][' + j + ']"]').val());
}
tableHtml += '</tr>';
}
tableHtml += '</table>';
// 替换表格内容
$('#matrix-table').html(tableHtml);
});
$('#calculate-btn').on('click', function() {
// 发送矩阵数据到后端进行计算
var formData = $('#matrix-form').serialize();
$.ajax({
url: 'matrixServlet',
type: 'POST',
data: formData,
success: function(response) {
// 在前端展示计算结果
$('#result').html(response);
},
error: function(xhr, status, error) {
console.log('Error:', error);
}
});
});
});
</script>
</head>
<body>
<h2>Matrix Calculation</h2>
<form id="matrix-form">
<label for="row-count">行数:</label>
<input type="number" id="row-count" name="rowCount" min="1" required>
<br>
<label for="col-count">列数:</label>
<input type="number" id="col-count" name="colCount" min="1" required>
<br>
<input type="submit" value="创建表格">
</form>
<br>
<div id="matrix-table"></div>
<br>
<button id="calculate-btn">计算</button>
<br>
<div id="result"></div>
</body>
</html>
发送ajax请求到servlet按理说应该抛出空指针或者parseint异常,但是idea的控制台也没报错
将原有的首页初始化公告拆解成两部分:按传统初始化最新消息和主题列表(如
图 8.2 所示)及采用 Ajax 方法分页加载新闻列表(如图 8.1 所示)。
图8.2 初始化最新消息和主题列表
按传统方式初始化最新消息和主题列表的关键代码如下。
……//省略其他功能
else if("topicLatest".equals(opr)){//初始化首页侧边栏和主题列表
Map<Integer,Integer>topics = new HashMap<Integer,Integer>();
topics.put(1,5);
topics.put(2,5);
topics.Put(5,5);
List<List<News>> latests = newsService
.findLatestNewsByTid(topics); //查询最新消息
List<Topic> list = topicService.findAllTopics(); //查询所有主题
request.setAttribute("list1",latests.get(0)); // 左侧国内新闻
request.setAttribute("list2",latests.get(1)); //左侧国际新闻
request.setAttribute("list3",latests.get(2)); // 左侧国际新闻
request.setAttribute("list",list); //所有的主题
request.getRequestDispatcher("/index.jsp").forward(request,response);
}……//省略其他功能
处理分页加载新闻列表的 Ajax 请求的关键代码如下。
else if("topicNews".equals(opr)){ //分页查询新闻
//获得主题id 和当前页数
String tid = request.getParameter("tid");
String pageIndex = request.getParameter("pageIndex");
……//省略部分代码
Page pageObj = new page();
……//省略部分代码
//调用业务方法查询
if(tid ==null||(tid = tid.trim()).length() ==0)
newsService.findPageNews(null,pageObj);
else
newsService.findPageNews(Integer.valueOf(tid),pageObj);
//使用 FastJSON 将 Page 对象序列化成 JSON 字符串
String newsJSON = JSON.toJSONStringWithDataFormat(pageObj,
"yyyy-MM-dd HH:mm:ss",
SerializerFeature.WriteMapNullValue);
//向客户端返回响应数据
out.print("[{\"tid\":\""+tid+"\"},"+newsJSON +"]");
}……//省略其他功能
注意
为了保证客户端分页条件的完整,响应数据时一个 JSON 数组,包括主题 id
和查询结果两部分内容。