这是之前记录在word里的问题,现在誊到博客里。温故知新。时常回顾问题。
7.27 Bootstrap validator remote 验证出错
用Bootstrap validator插件验证表单内容user时,用remote方法作静态实时验证用户名是否已存在,但是当输入a的时候就显示“用户名已存在”,并且后面继续输的时候一直显示已存在。
原因: Remote的url文件 0727.php数据返回出错。
<?php if($_POST['user'] == 'aa' && $_POST['pass'] == 'aaa'){echo 'true'; }else{echo 'false'; } ?>
但是Bootstrap validator验证时dataType是json,并且读取返回的response的valid字段值,进行判断 所以php中返回的应该是json格式数据。
function runCallback() {var xhr = $.ajax({type: type,headers: headers,url: url,dataType: 'json',data: data});xhr.then(function(response) {response.valid = false;if ('function' === typeof condition) {response = condition(response);}if ('function' === typeof success) {success(response);}response.valid = response.valid === true || response.valid === 'true';dfd.resolve($field, 'remote', response);});
改为如下:
<?php if($_POST['user'] == 'aa'){$arr = array("valid"=>'false');echo json_encode($arr); }else{$arr = array("valid"=>'true');echo json_encode($arr); }?>
此时验证功能正常。问题解决。
7.28 修改代码页面没有变化
mjad_crm 修改代码文件gulp后打开网站,发现没有修改。尝试后发现html文件修改页面有变化,但是js文件里写alert也不运行。
原因:页面有缓存 修改后ctrl+F5强制刷新页面即可。
7.31 Error: Failed to lookup view "/order/intoCashIndex" in views directory "views"
新增批量导入到款页面时,在路由中配置如下: 但是打开批量到款页面时,报错: Error: Failed to lookup view "/order/intoCashIndex" in views directory "views"
原因:路径出错,/views是模板路径,渲染的页面应该是 order/intoCashIndex 多写了一个/
改为 res.render('order/intoCashIndex',{});即可。
8.2 配置路由后,页面显示无法访问
路由配置如下:
router.get('/intoCashDetail/:id',(req,res,next) => {var query = {Code: req.params.id,}; MJJS.permit(req,res,'/draw/getDrawBusinessInfo') && MJJS.valid('/draw/getDrawBusinessInfo', query, req, res, next, function(data){res.render('order/intoCashDetail',{config:config,title:'批量导入到款记录-订单管理',info:data,listMenu:req.session.listMenu,listRole: req.session.listRole});}); });
原因:查询接口发现,'/draw/getDrawBusinessInfo'这个接口需要的数据,有三个{businessCode,pageNum,pageSize}。
而我写的名字是code,不符合接口的参数要求,因此无法返回数据 改为businessCode后,页面成功显示
8.3 表格列表渲染
(1)像下面这样写,不用data和load函数时,必须手动渲染每列数据,否则列表接不到值
table: function() {MJJS.ui.iTable('#advTable', {default: MJJS.common.defaultTable,columns: ['no', //NO'contacter', //联系人'mobile', //联系电话'customerName', //客户名称'qq', //QQ],render: {0: function(o){return o.no || '-'; },1: function(o) {return o.contacter || '-';},2: function(o) {return new Date(n).format('yyyy-mm-dd');},3: function(o) {
},
4: function(o){
}},searchEmpty: '搜索不到数据',url: API.list});},
(2)可以不写render函数,直接用data和load函数,会将接口返回的值o作为数据源,和当前表格合并起来,自动填充数据。
table: function() {MJJS.ui.iTable('#advTable', {default: MJJS.common.defaultTable,columns: ['checkbox', //全选'no', //NO'contacter', //联系人'name' //操作],render: {},data: function(o){MJJS.data.objMergeTable(_table, o);},searchEmpty: '搜索不到数据',load: function(table) {_table = table;},error: function(err) {if (err.code === '4000004') {MJJS.page.dialog.alert(err.msg, function() {window.location.href = '/logout';});}},url: API.list});},
注意在orderlist函数外定义一个全局函数_table,存储当前表格
当然,如果列表中的数据是动态的,比如改变筛选条件后重新渲染列表,这时需要定义一个arrList,存放列表的数据
common.js --- MJJS.data
8.3 导入批次内容挤到下一行的问题 批量导入到款单记录页面,导入批次内容挤到下一行的问题
原因:form-body有属性word-wrap,
word-wrap:break-word; 什么意思?????
防止长单词溢出父容器,使用word-wrap:break-word会在内部断句,因此9会溢出到下一行
解决办法:去掉最外层的<div class="form-body">就好了
8.10 初始进入页面时,为什么第二个form-group会有20px的多出来的高度?? 关闭模态框再打开或者点击查询后又没了???
再细一步 应该是table的问题 为什么页面刚加载的时候iTable样式没有加载进来??点击查询之后,或者关掉模态框再开iTable就有了呢???
+!+!+!+!+!+!+!+!!+!+!+!+!!+!+!+!+!+!+!+!+!!+!+!++!+我是答案分割线 厚!!!感谢琪总哈哈!!!!!
原来iTable是table()函数带的,当运行table函数时,才会加载iTable.css,而我的页面是在点击查询之后才调用table函数的:
$('#distrSearch').on('click', function() {searchVal = $('#distributeNameCH').val();planAudit.table();//调用table函数 });
那为什么别的页面的模态框表格没有这个问题呢??
因为别的页面大都是列表页,首先会调用table函数渲染页面列表,此时iTable已经被加载了,再打开modal就有样式了。
解决办法:
在当前html页面手动写iTable样式即可。