layui不用表格显示数据

layui不用表格显示数据,第1张

1、把json放到response里传到前端页面时,它会把字段的大小写改变,显示不了数据,一定要从浏览器访问那个数据源的路径。

2、对照浏览器访问数据源所返回的数据属性名称修改相应的field字段。就能正常显示数据了。

如上图所示,要扣除里面的表格数据,该怎么弄呢?思路是先把整个表格抠出来,然后按照tr进行分割,存到数组,然后一个个遍历进行正则匹配,最后输出结果转化为json格式,供前台调用!

<phpclass getHtmlChar {

var $url;    var $pattern_find;    var $pattern_replace;    var $timeout;    /

@param url 需要抓取的url链接

@param pattern_find 需要匹配的字段正则表达式

@param pattern_replace 需要替换的字符正则表达式

@param timeout 设置超时阻断程序执行,默认10秒,这个字段一般留空

/

function __construct($url, $pattern_find, $pattern_replace, $timeout) {

$this->url = $url;        $this->pattern_find = $pattern_find;        $this->pattern_replace = $pattern_replace;        $this->timeout = 10;

}    // 获取网页源代码

function getHtml() {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $this->url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/50 (Windows NT 61; WOW64) AppleWebKit/53736 (KHTML, like Gecko) Chrome/3401847131 Safari/53736'); //模拟浏览器,防止被拦截

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout);        $html = curl_exec($ch);        // 匹配需要的大的字段,例如一段table,取出来之后再一行一行做匹配

preg_match($this->pattern_find, $html, $match);        //判断是否有传入替换的正则表达式,如果有就进行匹配替换,并返回替换后的字符串,如果没有,则直接返回匹配出来的大段,例如整个table表格

// echo "<pre>";

// print_r($match);

// echo "</pre>";

// exit;

if (!empty($this->pattern_replace)) {            return preg_replace($this->pattern_replace, '', $match[0]);

} else {            return $match[0];

}

}    // 传入正则和需要处理的字符串,返回的是匹配到的数组

function prgMatche($pre_all, $strs) {

if (!is_string($strs)) {            echo '传入的不是字符串!请检查!<br>';            echo "<pre>";

print_r($strs);            echo "</pre>";            exit;

}

preg_match_all($pre_all, $strs, $matches);        return $matches;

}    // 获取表格表头

function getTableJson() {

// 获取一行一行tr

$trs = $this->prgMatche('/<tr([\s\S]+)<\/tr>/i', $this->getHtml());        // 获取表头

$ths = $this->prgMatche('/<th>([\s\S]+)<\/th>/i', $trs[1][0]);        // 获取行数,循环匹配的时候需要用到

$num = sizeof($trs[1]);        // echo $num;

// 一行一行匹配表格数据

for ($i = 1; $i < $num; $i++) {            $tr = $this->prgMatche('/td>([\s\S]+)<\/td>/i', $trs[1][$i]);            $tds[] = $tr[1];

}        // 把表头和表数据存入json

array_unshift($tds, $ths[1]);        // 返回一个数组,0为json格式数据,1为数组格式数据

return [json_encode($tds), $tds];

}

}// 以下是调用这个类的例子$url = '>

热身话题

在开发的过程中,大量数据的展示大多采用表格的方式,直观,清晰。在这里,我也使用过一些框架Bootstraptable ,Dev table ,layui table。本次采用的layui table。用表格展示数据的同时会提供丰富的查询条件去筛选相应的数据。由于大量的数据,一般都会使用分页的形式去查询数据,框架中带有这种功能。

底部分页栏效果图

上方查询栏效果图

问题来源

首次进入页面或者页数停留在第一页使用查询栏查询时能够查询到数据。当分页切换到第二页时,再使用查询栏查询,可能查不到数据。(为什么说是可能?后面会给出解释)

理想方法

 ①在查询提交参数时,添加一个参数 page:1

layui中通过where提交参数 where:{ search:{'USER_NAME':'汪菜菜'},page:1}

注:此方法虽然看似解决了问题,实际存在巨大的bug。你会发现使用查询栏后当你选择任一页时请求后台的page参数都为1,也就是无论选择哪一页得到的结果都是第一页的数据。

 ②自己也找过资料,说要把请求参数写成下方这种形式,测试结果也并未解决问题,和不加的效果相同,不知道时因为后台处理问题还是其他问题。

var Table = {

ID: "tb",

page: {

curr: 1

},

Where: {

search: JSONstringify(jsondata),

}

};

怎么肥四,难道是layui更新了吗,之前我使用这个解决方式是不行滴,目前此解决方法是可行的。2019-12-17

在使用layui 的过程中还是发现无法满足开发需求,后期将使用dev表格框架。

问题解析

表格有自带的分页功能,后台分页主要是通过传参 {limit:15,page:1} ,表示当前页数为第一页,每页显示15条数据,两个参数来控制分页的分页查询。假设当前有三十条数据,则初始化表格时,显示两页,总数30,页数为1,数据源为1-15条数据。当我们添加查询条件时,假设我通过模糊查询 “汪” 能在 30 条数据中查询到 10 条数据 ,当前页数为第一页,查询的数据进行分页{limit:15,pa

以上就是关于layui不用表格显示数据全部的内容,包括:layui不用表格显示数据、layui表格table怎么引入json读取表格数据显示、layui加载数据表格中级联查询一对一的内容拿不到等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10134010.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存