问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

layui table.render 异步请求不执行

发布网友 发布时间:2022-04-07 08:15

我来回答

2个回答

懂视网 时间:2022-04-07 12:37

前端实现代码如图(完整代码):

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>数据表格</title>
 <meta name="renderer" content="webkit">
 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
 <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
 <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
</head>
<body>

 <div class="layui-card layadmin-header">
 <div class="layui-breadcrumb" lay-filter="breadcrumb">
 <a lay-href="">主页</a>
 <a><cite>组件</cite></a>
 <a><cite>数据表格</cite></a>
 <a><cite>开启头部工具栏</cite></a>
 </div>
 </div>
 
 <div class="layui-fluid">
 <div class="layui-row layui-col-space15">
 <div class="layui-col-md12">
 <div class="layui-card">
  <div class="layui-card-header">开启头部工具栏</div>
  <div class="layui-card-body">
  <table class="layui-hide" id="test-table-toolbar" lay-filter="test-table-toolbar"></table>
  
  <script type="text/html" id="test-table-toolbar-toolbarDemo">
  <div class="layui-btn-container">
  <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
  <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button>
  <button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button>
  </div>
  </script>
  
  <script type="text/html" id="test-table-toolbar-barDemo">
  <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
  <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
  </script>
  </div>
 </div>
 </div>
 </div>
 </div>
 
 <script src="../../layuiadmin/layui/layui.js"></script> 
 <script>
 layui.config({
 base: '../../layuiadmin/' //静态资源所在路径
 }).extend({
 index: 'lib/index' //主入口模块
 }).use(['index', 'table'], function(){
 var admin = layui.admin
 ,table = layui.table;
 
 table.render({
 elem: '#test-table-toolbar'
 ,url:"http://localhost:8090/program-web/api/magic_change/oj/problem/page_list?userId=youcongtech"
 ,toolbar: '#test-table-toolbar-toolbarDemo'
 ,title: '程序设计题绑定'
 ,cols: [[
 {type: 'checkbox', fixed: 'left'},
 {field:'problemId', width:300, title: 'ID', sort: true}
 ,{field:'title', width:400, title: '题目'}
 ,{width:215, align:'center', fixed: 'right', toolbar: '#test-table-toolbar-barDemo'}
 ]]
 ,page: true
 });
 
 //头工具栏事件
 table.on('toolbar(test-table-toolbar)', function(obj){
 var checkStatus = table.checkStatus(obj.config.id);
 switch(obj.event){
 case 'getCheckData':
  var data = checkStatus.data;
  layer.alert(JSON.stringify(data));
 break;
 case 'getCheckLength':
  var data = checkStatus.data;
  layer.msg('选中了:'+ data.length + ' 个');
 break;
 case 'isAll':
  layer.msg(checkStatus.isAll ? '全选': '未全选');
 break;
 };
 });
 
 //监听行工具事件
 table.on('tool(test-table-toolbar)', function(obj){
 var data = obj.data;
 if(obj.event === 'del'){
 layer.confirm('真的删除行么', function(index){
  obj.del();
  layer.close(index);
 });
 } else if(obj.event === 'edit'){
 layer.prompt({
  formType: 2
  ,value: data.email
 }, function(value, index){
  obj.update({
  email: value
  });
  layer.close(index);
 });
 }
 });
 
 });
 </script>
</body>
</html>

核心js代码如下:

table.render({
 elem: '#test-table-toolbar'
 ,url:"http://localhost:8090/program-web/api/magic_change/oj/problem/page_list?userId=youcongtech"
 ,toolbar: '#test-table-toolbar-toolbarDemo'
 ,title: '程序设计题绑定'
,cols: [[
 {type: 'checkbox', fixed: 'left'},
 {field:'problemId', width:300, title: 'ID', sort: true}
 ,{field:'title', width:400, title: '题目'}
 ,{width:215, align:'center', fixed: 'right', toolbar: '#test-table-toolbar-barDemo'}
 ]]
 ,page: true
 });

要求后台返回数据格式必须为:

{
 "msg": "success",
 "code": "0",
 "data": [
 {
 "title": "for循环输出",
 "problemId": 1139
 },
 {
 "title": "测试2",
 "problemId": 1138
 },
 {
 "title": "测试1",
 "problemId": 1137
 },
 {
 "title": "for循环-Plus",
 "problemId": 1140
 },
 {
 "title": "第一个C++程序",
 "problemId": 1141
 }
 ]
}

不然的话,会出现相关提示(如code对于的值必须为0,而不能为000000,以及data对应数据必须像上面这样的,不然cols里面不好自动对应上。

后台实现代码如下:

控制层代码(路由)

@GetMapping("/page_list")
@ApiOperation(value="根据用户ID获取题目分页列表",httpMethod="GET",notes="根据用户ID获取题目分页列表")
public JSONObject page_list(@RequestParam String userId, @RequestParam (value="page") String pageno, @RequestParam (value="limit") String pagesize) {
 
 System.out.println("userId:"+userId+"|| pageno:"+pageno+"||pagesize:"+pagesize);
 
 JSONObject json = new JSONObject();
 
 //当前页
 Integer page = Integer.parseInt(pageno.trim());
 //每页的数量
 Integer size = Integer.parseInt(pagesize.trim());

 Map<String, Object> paramMap = new HashMap<>();
 paramMap.put("userId", userId);
 paramMap.put("start", (page - 1) * size); //当前页的数量
 paramMap.put("size", size); //当前页
 
 List<Problem> problemList = problemService.getProblemPageListInfo(paramMap);
 
 int count =problemService.getProblemPageTotalCount(paramMap);

 if(!problemList.isEmpty()) {

 json.put("msg", "success");
 json.put("code", "0");
 json.put("data", problemList);
 json.put("count", count);
 
 }else {
 
 json.put(CommonEnum.RETURN_MSG, "error");
 json.put(CommonEnum.RETURN_CODE, "222222");
 }
 
 return json;

}

Service及其实现类:

Service:

public interface ProblemService extends IService<Problem> {
 
 List<Problem> getProblemPageListInfo(Map<String,Object> paramMap);
 
 Integer getProblemPageTotalCount(Map<String,Object> paramMap);

}

Service实现类:

@Service
public class ProblemServiceImpl extends ServiceImpl<ProblemDao, Problem> implements ProblemService {

 @Autowired
 private ProblemDao problemDao;
 
 @Override
 public List<Problem> getProblemPageListInfo(Map<String, Object> paramMap) {

 return problemDao.getProblemPageListInfo(paramMap);
 }

 @Override
 public Integer getProblemPageTotalCount(Map<String, Object> paramMap) {

 return problemDao.getProblemPageTotalCount(paramMap);
 }

}

ProblemDao.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.sass.mapper.ProblemDao">

 <!-- 通用查询映射结果 -->
 <resultMap id="BaseResultMap" type="com.test.sass.entity.Problem">
 <id column="problem_id" property="problemId" />
 <result column="title" property="title" />
 <result column="description" property="description" />
 <result column="input" property="input" />
 <result column="output" property="output" />
 <result column="sample_input" property="sampleInput" />
 <result column="sample_output" property="sampleOutput" />
 <result column="spj" property="spj" />
 <result column="hint" property="hint" />
 <result column="source" property="source" />
 <result column="in_date" property="inDate" />
 <result column="time_limit" property="timeLimit" />
 <result column="memory_limit" property="memoryLimit" />
 <result column="defunct" property="defunct" />
 <result column="accepted" property="accepted" />
 <result column="submit" property="submit" />
 <result column="solved" property="solved" />


 <result column="p_ladder_level" property="pLadderLevel" />
 <result column="p_ladder_type" property="pLadderType" />
 </resultMap>

 <!-- 通用查询结果列 -->
 <sql id="Base_Column_List">
 problem_id AS problemId, title, description, input, output, sample_input AS
 sampleInput, sample_output AS sampleOutput, spj, hint, source, in_date
 AS inDate, time_limit AS timeLimit, memory_limit AS memoryLimit,
 defunct, accepted, submit, solved
 </sql>


 <select id="getProblemPageListInfo" resultMap="BaseResultMap">
 SELECT DISTINCT problem.problem_id,problem.title FROM privilege AS p LEFT JOIN
 problem ON( REPLACE(p.rightstr,'p','') = problem.problem_id) WHERE
 p.user_id =#{userId} AND problem.problem_id !=0 AND p.rightstr !=
 'problem_editor' AND p.rightstr != 'contenst_creator' limit #{start},#{size}
 </select>

 <select id="getProblemPageTotalCount" resultType="Integer">
 SELECT COUNT(DISTINCT problem.problem_id) FROM privilege AS p LEFT JOIN
 problem ON( REPLACE(p.rightstr,'p','') = problem.problem_id) WHERE
 p.user_id =#{userId} AND problem.problem_id !=0 AND p.rightstr !=
 'problem_editor' AND p.rightstr != 'contenst_creator' 
 </select>
</mapper>

实体类:

public class Problem extends Model<Problem> {

 private static final long serialVersionUID = 1L;

 @TableId(value = "problem_id", type = IdType.AUTO)
 private Integer problemId;
 private String title;
 private String description;
 private String input;
 private String output;
 @TableField("sample_input")
 private String sampleInput;
 @TableField("sample_output")
 private String sampleOutput;
 private String spj;
 private String hint;
 private String source;
 @TableField("in_date")
 private String inDate;
 @TableField("time_limit")
 private String timeLimit;
 @TableField("memory_limit")
 private String memoryLimit;
 private String defunct;
 private Integer accepted;
 private Integer submit;
 private Integer solved;
 
 @TableField(exist=false)
 private String pLadderLevel;
 
 @TableField(exist=false)
 private String pLadderType;

 

 public Integer getProblemId() {
 return problemId;
 }

 public void setProblemId(Integer problemId) {
 this.problemId = problemId;
 }

 public String getTitle() {
 return title;
 }

 public void setTitle(String title) {
 this.title = title;
 }

 public String getDescription() {
 return description;
 }

 public void setDescription(String description) {
 this.description = description;
 }

 public String getInput() {
 return input;
 }

 public void setInput(String input) {
 this.input = input;
 }

 public String getOutput() {
 return output;
 }

 public void setOutput(String output) {
 this.output = output;
 }

 public String getSampleInput() {
 return sampleInput;
 }

 public void setSampleInput(String sampleInput) {
 this.sampleInput = sampleInput;
 }

 public String getSampleOutput() {
 return sampleOutput;
 }

 public void setSampleOutput(String sampleOutput) {
 this.sampleOutput = sampleOutput;
 }

 public String getSpj() {
 return spj;
 }

 public void setSpj(String spj) {
 this.spj = spj;
 }

 public String getHint() {
 return hint;
 }

 public void setHint(String hint) {
 this.hint = hint;
 }

 public String getSource() {
 return source;
 }

 public void setSource(String source) {
 this.source = source;
 }

 public String getInDate() {
 return inDate;
 }

 public void setInDate(String inDate) {
 this.inDate = inDate;
 }

 public String getTimeLimit() {
 return timeLimit;
 }

 public void setTimeLimit(String timeLimit) {
 this.timeLimit = timeLimit;
 }

 public String getMemoryLimit() {
 return memoryLimit;
 }

 public void setMemoryLimit(String memoryLimit) {
 this.memoryLimit = memoryLimit;
 }

 public String getDefunct() {
 return defunct;
 }

 public void setDefunct(String defunct) {
 this.defunct = defunct;
 }

 public Integer getAccepted() {
 return accepted;
 }

 public void setAccepted(Integer accepted) {
 this.accepted = accepted;
 }

 public Integer getSubmit() {
 return submit;
 }

 public void setSubmit(Integer submit) {
 this.submit = submit;
 }

 public Integer getSolved() {
 return solved;
 }

 public void setSolved(Integer solved) {
 this.solved = solved;
 }

 
 
 public String getpLadderLevel() {
 return pLadderLevel;
 }

 public void setpLadderLevel(String pLadderLevel) {
 this.pLadderLevel = pLadderLevel;
 }

 public String getpLadderType() {
 return pLadderType;
 }

 public void setpLadderType(String pLadderType) {
 this.pLadderType = pLadderType;
 }

 @Override
 protected Serializable pkVal() {
 return this.problemId;
 }

 @Override
 public String toString() {
 return "Problem [problemId=" + problemId + ", title=" + title + ", description=" + description + ", input="
  + input + ", output=" + output + ", sampleInput=" + sampleInput + ", sampleOutput=" + sampleOutput
  + ", spj=" + spj + ", hint=" + hint + ", source=" + source + ", inDate=" + inDate + ", timeLimit="
  + timeLimit + ", memoryLimit=" + memoryLimit + ", defunct=" + defunct + ", accepted=" + accepted
  + ", submit=" + submit + ", solved=" + solved + ", pLadderLevel=" + pLadderLevel + ", pLadderType="
  + pLadderType + "]";
 }
}

效果如下:

1.jpg更多layui知识请关注PHP中文网layui使用教程栏目。

热心网友 时间:2022-04-07 09:45

你要直接访问这个控制器的连接,是否有json数组返回, 你可能是没有json数组返回所以才会没有反应
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 养宠物的人遵守规则,是不是就能和别人平安相处呢? 为什么在网上查的3U8890是空客350怎么实际是A321 R—128C飞机是什么飞机? 波音787-10能打败A350-900吗? 客机一般坐多少人 波音787与空客A350哪个大? 波音747、空客A350在雨中起飞 空中客车的A350系列 空中客车A350的主要特点 空中客车A350的技术参数 请问空客a350起飞时v1、vr、v2的速度分别是多少?起飞与降落时襟翼分别打开多少度?仰角是多少时会失速? 空客A350与波音787起飞对比,差别在哪 怎么更换实名认证 六安卤菜的做法及配方视频 麻辣鸡心是怎么卤的,焦作哪里有传授这个卤鸡心的做法的? 卤菜的做法及配方在哪学? 卤鸡心要把里面的血块挤出来吗 卤鸡心怎么做好吃窍门 香辣卤鸡心的做法,香辣卤鸡心怎么做好吃,香辣 绝味卤鸡心的做法,绝味卤鸡心怎么做好吃,绝味 微信群新加成员在电脑上不显示? 太阳能热水器辅助电加热为什么老是自动关闭 美的热水器打开加热一会时间电影就会自动关闭怎么回事? 华硕路由器RP-AC51做有线AP,5g信号正常,4G连接上去却无法访问互联网? 使用别的路由器可以正常上网 而用华硕路由器就上不了网是怎么回事 华硕路由器RT-AC87U无法上网? 华硕无线路由器用手机无法连接无线网络 零件报价单怎么写?急~!! 我的华硕路由器插上网线不能上网。我只有手机,应该如何设置,而且显 华硕路由器无法连接互联网 急需一份外贸英文报价单范文,请哪高手发一份给我,我是外贸新人,谢谢!!! layui table cols有没有回调函数? 亚马逊支付宝付款跟绑定不是 亚马逊也能支付宝付款吗? 在亚马逊买的 用的支付宝 收到包裹之后怎么支付钱 股票亏损了40%,是否还有机会回本? 股票亏损40%散户如何解套 当一只股票跌到40个点的时候该怎么办 股票跌30个点得涨多少才能涨回来 股票跌了20一30点怎么办 我的股票下跌了百分之四十该怎么办?