场景:在html页面中,需要展示内部数据和客户数据,数据库中设计一个字段的值,0代表内部数据,1代表客户数据,默认为0;在页面中默认展示内部数据(SQL语句的字段参数为0),点击按钮后按钮的值变为1,并传递到后台,将1作为SQL条件查询出客户模式然后展示到页面中。
1.首先设置按钮默认值:
<button style="opacity:0.05;" type="button" name="TYPE" value="0" id="CustomerBt" onclick="setValue()">BT</button>
2.在JS中设置点击按钮执行的代码(我这里是先获取到按钮的值,然后判断结果重新进行赋值操作)
function setValue(){ //点击按钮时触发的方法
bt = $("#CustomerBt").val(); //获取按钮值
if(bt == 0){
$('#CustomerBt').attr('value','1') //判断后重新赋值
}else{
$('#CustomerBt').attr('value','0')
}
bt = $("#CustomerBt").val() //再次获取修改后的值
ssc() //立即执行数据更新
}
3.通过ajax将按钮的值传到后台
var ssc
var bt=0 //设置初始值,默认为0(内部数据)
ssc = function(){
jsonData = {
TYPE: bt //TYPE为我数据库中设置区分内部数据和客户数据的字段
}
$.ajax({
url:'/mes/HomePage/list', //地址
dataType:'json', //数据类型
data:jsonData, //将数据传到后台
type:'POST', //类型
timeout:5000, //超时
//请求成功
success:function(data,status){
//你的代码逻辑
},
//失败/超时
error:function(XMLHttpRequest,textStatus,errorThrown){
if(textStatus==='timeout'){
alert('請求超時');
setTimeout(function(){
alert('重新请求');
},2000);
}
}
});
return ssc;
}
setInterval(ssc(),20000); //设置ajax 20秒请求一次数据
4.控制层接收
@PostMapping("/list")
@ResponseBody
public Map<String, Object> list(HomePage homePage,HttpSession session,@RequestParam(value = "TYPE",required = false) Integer TYPE)
{
System.out.println(TYPE); //调试打印
Map<String, Object> map = new TreeMap<String, Object>();
List<HomePage> list = homePageService.selectHomePageList(homePage); //此方法放的是页面下方滚动数据
List<HomePage> listB = homePageService.selectHomePageValue(homePage); //此方法放的是页面上面部分的投入和产出数据
List<HomePage> listYield = homePageService.selectHomePageYield(homePage); //此方法放的是页面中间部分的综测良率数据
map.put("rowsB", listB);
map.put("rows", list);
map.put("rowsYield", listYield);
return map;
}
@RequestParam详细介绍参考大佬文章,这里只说一下required参数,设置为true时是必须要传参数,false则不是必须,在以上写法中,第一次获取到的结果是null,所以这里必须要设置为false
5.最后传给Mybatis作为条件,返回对应的数据