ajax请求的json数据,获取的对象数组中,每个对象的属性顺序是怎么排的,这个排序的依据是什么呢 10C

如下图

ajax请求的json数据,获取的对象数组中,每个对象的属性顺序是怎么排的,这个排序的依据是什么呢 ?

如图中描述的,我两种json数据,第一种和第二种区别就是前者的每个对象中后三个属性都加了一个文字**“年”**,为什么请求后输出的数组对象中每个对象属性顺序变了呢,这个顺序是怎么决定的呢,依据是什么呢,还望大佬慷慨解囊,为我传授一些方面的知识
问题诉求描述

3个回答

属性本身就是无序的,如果你非要顺序,应该序列化成列表,而不是属性字典的形式。
之所以顺序改变,这个取决于json序列化/反序列化程序的实现。

这种key:value键值对形式的数据的排序是无序的哥们,因为这种排序根本毫无意义。你如果想取到数字里面的指标这个值,那你可以通过遍历,比如你这个数组名为data,遍历以后你可以这样取用它:data[i].指标。

这个对后台取数据没有影响的,后台取数据遍历的时候,还是按照属性来取的。

图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
mvc4中ajax请求重定向问题
在mvc4中我有一个过滤器 在每一个action前都会先调用一次,里面的方法是用来判断用户是否登录如果是程序发出的请求还好可以重定向到登录页面 但ajax 的请求就无法重定向,我现在有一个解决方法但是 还是不完美 这是我的过滤器,如果是ajax的请求就在浏览器头部设置一个标记 ``` protected override void OnActionExecuting(ActionExecutingContext filterContext) { if (UserInfo == null) { //如果是Ajax 请求的 要特殊处理 if (HttpContext.Request.IsAjaxRequest()) { //添加头部信息 前端会有ajax回调 判断 Response.AddHeader("sessionstatus", "timeout"); return; } else { //正常的请求 filterContext.Result = new RedirectToRouteResult( "Default", new RouteValueDictionary( new { controller = "Login/Login", action = "Login" })); } } else { base.OnActionExecuting(filterContext); } } ``` 如果标记是ajax的就 在我的js 里设置一段全局的 js代码 如果是标记的 就用js 来定向 登录页面 ``` /** * 设置未来(全局)的AJAX请求默认选项 * 主要设置了AJAX请求遇到Session过期的情况 */ $.ajaxSetup({ type: 'POST', complete: function (xhr, status) { var sessionStatus = xhr.getResponseHeader('sessionstatus'); if (sessionStatus == 'timeout') { //var yes = confirm('由于您长时间没有操作, session已过期, 请重新登录.'); //if (yes) { window.location.href = '/Login/Login/Login'; // } } } }); ``` 那么问题来了 我这里 设置完标记后 js也重定向了 但是 我请求的 query 这个查询方法 必须要 全部执行完 才重新定向登录页面 下面这个 方法会执行 ``` public string Query() { //string BeginDate = Request.Form["BeginDate"]; //string EndDate = Request.Form["EndDate"]; string MemberNO = Request.Form["MemberNo"]; string MemberName = Request.Form["MemberName"]; int pageIndex = Request.Form["page"] != "" ? Convert.ToInt32(Request.Form["page"]) : 0; int pageSize = Request.Form["rows"] != "" ? Convert.ToInt32(Request.Form["rows"]) : 0; StringBuilder WhereCode = new StringBuilder(" CompanyID = "+this.UserInfo.CompanyID); //if (!string.IsNullOrEmpty(BeginDate)) //{ // WhereCode.Append(" AND (RegisterDate >= '" + BeginDate + "')"); //} //if (!string.IsNullOrEmpty(EndDate)) //{ // WhereCode.Append(" AND (RegisterDate <= '" + EndDate + "')"); //} if (!string.IsNullOrEmpty(MemberNO)) { WhereCode.Append(" AND MemberNo ='" + MemberNO + "'"); } if (!string.IsNullOrEmpty(MemberName)) { WhereCode.Append(" AND MemberName like '%" + MemberName + "%'"); } WhereCode.Append(" AND (Status = 'A') AND (MemberType = '01')"); MemberService memberInfo = new MemberService(); string json = memberInfo.GetMemberInfo(WhereCode.ToString(), pageIndex, pageSize); return json; } ``` 不是 谁有好的解决方案 如果我是ajax 的请求 就让请求 不继续 执行 直接重定向
select2 ajax获取java后台下拉框数据 并回显选中的值
用ajax 请求后台值后 发现 下拉框没有搜索功能了 ![图片说明](https://img-ask.csdn.net/upload/201808/05/1533440496_530669.png) ``` * 执行select2方法初始化 */ function select2Execute() { var dataList = [ { id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' } ]; var dataList1=[{'id':"1","text":"enhancement"}]; $(function() { /*本地注入方式*/ $(".downList2").select2({ // $("select[name='xuewei_id']").select2({ // $('select[id="xuewei_id"]').select2({ // $('#xuewei_id').select2({ // $("#selectSection").find("select.combox").select2({ // $(".select2-selection__choice").select2(); // $(".combox").select2({ placeholder : "请至少选择一个人名", tags : true, createTag : function(decorated, params) { return null; }, width : '256px', ajax: { url: '/erzhentang/manage/forAjax.do?requestType=12.5_1', dataType: 'json', data: function (params) { var query = { //请求的参数, 关键字和搜索条件之类的 search: params.term //select搜索框里面的value } // Query paramters will be ?search=[term]&page=[page] return query; }, delay: 250, processResults: function (data, params) { //返回的选项必须处理成以下格式 var results = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }]; return { results: results //必须赋值给results并且必须返回一个obj }; } }, allowClear: true,//允许清空 escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入 minimumInputLength: 0, formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 }); //two AJAX获取数据方式 //$("select[name='xuewei_id']").select2({ /*$(".downList2").select2({ ajax: { type:'GET', url: '/erzhentang/manage/forAjax.do?requestType=12.5_1', // url: dataList1, dataType: 'json', delay: 250, data: function (params) { return { q: params.term, // search term 请求参数 page: params.page }; }, processResults: function (data, params) { params.page = params.page || 1; var itemList = []; var arr = data.result.list for(item in arr){ itemList.push({id: item, text: arr[item]}) } var itemList = []; var results = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }]; var arr = result.list for(item in arr){ itemList.push({id: item, text: arr[item]}) } var results = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }]; // var results=[{"id":"68","text":"平和质"},{"id":"104","text":"特禀质"}] return { // results: data.items,//itemList results: results , //必须赋值给results并且必须返回一个obj // results: data,//itemList pagination: { more: (params.page * 2) < data.total_count } }; }, cache: true }, placeholder:'请选择',//默认文字提示 language: "zh-CN", tags: true,//允许手动添加 allowClear: true,//允许清空 escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入 minimumInputLength: 0, formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 });*/ function formatState(state) { if (!state.id) { return state.text; } var $state = $('<span>' + state.text + '</span>'); return $state; } ; $('#sel_recommender').select2({ placeholder : "请选择一个人名", templateResult : formatState, width : '256px' }); // 通过id获取select2的text值,这里的text值可能有空格,需注意 function getSelect2Text(obj) { var select2Obj = $("select[name='xuewei_id']").select2(); return select2Obj.find("option:selected").text(); } /* 获取每一个name对应的值 */ var strXueweiId = ""; $("[name=xuewei_id]").each(function() { alert("this值:" + $(this).val()); /* 拼接每一项name的值 组合成和其它项目类似 gender那样的数组 */ strXueweiId += $(this).val() + "-"; }); alert("strXueweiId:" + strXueweiId) $("#strXueweiId").val(strXueweiId) }); } ```
怎么通过选择器,选择到AJAX html添加的页面属性.
需要做一个心跳检测. 一级页面展示的是一个设备分组,通过点击设备相应的分组. 发送AJAX请求查询当前分组下的设备. 然后将查询到的数据通过html写入到页面(html,或者取json解析append添加都可以).这一步完成之后. 我需要在这个页面取到通过html写入页面的每个div框中的id值. 但是由于是异步请求,没有刷新页面, 我的选择器,选不到异步加载的div.请问我怎么才能取到这些异步加载的div中的id值.需要再做一个异步的 心跳检测功能,在当前打开的设备分组下获取当前展示的所有设备的id,传到后台去. ``` ```
关于ajax发送几次请求后不再发送的问题
本人今天在跟视频做小项目,遇到一个比较棘手的问题贴出来希望大神能解答。 关于一个商城商品分类列表的目录问题, 这是前端发送的ajax请求,目的是获取数据库中的分类列表,回调函数是处理ul列表 ```<script type="text/javascript"> $(function(){ var content = ""; $.post( "${pageContext.request.contextPath}/categoryList", function(data){ for(var i=0;i<data.length;i++){ content += "<li><a href='#'>"+data[i].cname+"</a></li>"; } $("#category").html(content); }, "json" ); }); </script> ``` `` Jedis jedis = JedisPoolUtils.getJedis(); String list = jedis.get("category_list"); //判断是否为空 if(list == null){ //查询mysql数据库 ProductService service = new ProductService(); List<Category> list_category = null; try { list_category = service.findCategoryList(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } //将获得的结果转化为json格式 Gson gson = new Gson(); list = gson.toJson(list_category); //将数据写入redis jedis.set("category_list", list); } //将数据返回前台(注意转换编码) response.setContentType("text/html;charset=utf-8"); response.getWriter().write(list); ``` 这是后端对于请求的处理,service和dao不再贴了,验证后没有问题,如代码所示,是先查找redis数据库中有无信息,再决定是否去mysql中查找, 第一次运行成功 如图![图片说明](https://img-ask.csdn.net/upload/201709/01/1504248552_91216.png) 刷新网页八次后![图片说明](https://img-ask.csdn.net/upload/201709/01/1504248591_140319.png) 打断点发现每到第八次以后,页面都不再发送ajax请求,导致写入列表的数据为空,与cookie无关,与浏览器版本无关,(已经尝试过)可能与redis数据库有关??不知道求大神解答,在后端打的断点第八次以后就会跳过。。。说明ajax请求第八次以后就到不了servlet了。。。
select2 ajax 获取java后台数据 提示params is not defined
下拉框没有任何选项内容 ![图片说明](https://img-ask.csdn.net/upload/201808/05/1533410857_939033.png) js代码 ``` /* 执行select2方法初始化 */ function select2Execute() { var dataList = [ { id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' } ]; var dataList1=[{'id':"1","text":"enhancement"}]; $(function() { /*本地注入方式*/ /*$("select[name='xuewei_id']").select2({ // $('select[id="xuewei_id"]').select2({ // $('#xuewei_id').select2({ // $("#selectSection").find("select.combox").select2({ // $(".select2-selection__choice").select2(); // $(".combox").select2({ placeholder : "请至少选择一个人名", tags : true, createTag : function(decorated, params) { return null; }, width : '256px', });*/ //two AJAX获取数据方式 //$("select[name='xuewei_id']").select2({ $(".downList2").select2({ ajax: { type:'GET', // url: '/erzhentang/manage/forAjax.do?requestType=12.1', url: dataList1, dataType: 'json', delay: 250, data: function (params) { return { q: params.term, // search term 请求参数 page: params.page }; }, processResults: function (data, params) { params.page = params.page || 1; /*var itemList = []; var arr = data.result.list for(item in arr){ itemList.push({id: item, text: arr[item]}) }*/ return { results: data.items,//itemList pagination: { more: (params.page * 2) < data.total_count } }; }, cache: true }, placeholder:'请选择',//默认文字提示 language: "zh-CN", tags: true,//允许手动添加 allowClear: true,//允许清空 escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入 minimumInputLength: 0, formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 }); function formatState(state) { if (!state.id) { return state.text; } var $state = $('<span>' + state.text + '</span>'); return $state; } ; $('#sel_recommender').select2({ placeholder : "请选择一个人名", templateResult : formatState, width : '256px' }); // 通过id获取select2的text值,这里的text值可能有空格,需注意 function getSelect2Text(obj) { var select2Obj = $("select[name='xuewei_id']").select2(); return select2Obj.find("option:selected").text(); } /* 获取每一个name对应的值 */ var strXueweiId = ""; $("[name=xuewei_id]").each(function() { alert("this值:" + $(this).val()); /* 拼接每一项name的值 组合成和其它项目类似 gender那样的数组 */ strXueweiId += $(this).val() + "-"; }); alert("strXueweiId:" + strXueweiId) $("#strXueweiId").val(strXueweiId) }); } ```
Ext.Ajax.request() 请求
请问一下: 对Ext.Ajax 与服务器的交互一直都不太能理解,并且对Ext.Ajax.request() 在什么时候才用,是每个请求都需要吗,但是有时只是跳转到另外一个页面,比如, 我要修改一行数据,点击修改连接,这样子就跳到修改页面,那是需要通过ajax请求吗? 它的请求也是必须要有返回函数吗? 如果提交一个请求到action,什么情况才考虑到 需要用resposne返回数据到前台页面? 对这方面都一直有点困扰了? 对了,还有个问题,如果将后台数据加载到表单页面里面?只是直接将得到的数据存为json格式就可以了吗?
jqery dataTable请求获取到新数据后,表格不刷新
js代码 ``` var oTable = $('#sample_editable_1').dataTable({ "aLengthMenu": [ [5, 15, 20, -1], [5, 15, 20, "All"] // change per page values here ], // set the initial value "iDisplayLength": 15, "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>", "sPaginationType": "bootstrap", "oLanguage": { "sLengthMenu": "_MENU_ 每页显示条数", "oPaginate": { "sPrevious": "上一页", "sNext": "下一页" } }, "aoColumns" : [{ 'mDataProp' : "clazzName", 'sDefaultContent':'' },{ "mDataProp" : "course.courseName", 'sDefaultContent':'' }, { "mDataProp" : "teacher.userName", 'sDefaultContent':'' } , { "mDataProp" : "laboratory.labName", 'sDefaultContent':'' } , { "mDataProp" : "", 'sDefaultContent':'', "fnRender" : function(o,val){ return "<a class='edit' href='javascript:;'>编辑</a>" } }, { "mDataProp" : "id", 'sDefaultContent':'', "fnRender" : function(o,val){ return "<a class='delete' href='javascript:;'>删除</a><input id='saveId' type='hidden' value=\""+val+"\">" } }], "bProcessing":false, "bServerSide":true, 'sAjaxDataProp': 'aaData', "sAjaxSource":"/labAdmin/getClazzList?labId="+labId, "fnServerData":function ( sSource,aoData, fnCallback) { $.ajax({ url : sSource,//这个就是请求地址对应sAjaxSource data : {"aoData":JSON.stringify(aoData)},//这个是把datatable的一些基本数据传给后台,比如起始位置,每页显示的行数 type : 'post', dataType : 'json', async : false, success :fnCallback, error : function(msg) { } }); } }); ``` 页面刷新后的情况: ![图片说明](https://img-ask.csdn.net/upload/201605/18/1463543123_798520.jpg) 页面刷新后请求返回情况:(共6条) ![图片说明](https://img-ask.csdn.net/upload/201605/18/1463543018_987557.jpg) 在即时模糊框里输入查询信息后的请求返回情况:(可以看到只有两条) ![图片说明](https://img-ask.csdn.net/upload/201605/18/1463543068_795680.jpg) 但是表格并没有刷新:![图片说明](https://img-ask.csdn.net/upload/201605/18/1463543112_950086.jpg)
怎么把网页1的导航完美移植到网页2的轮播图上边的位置使导航和轮播图结合成一个网页
网页1带导航的 <!DOCTYPE html> <html> <head> <link rel="icon" href="images/favicon.ico" type="img/x-ico" /> <title>山东金泽网络科技有限公司</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta charset="utf-8"> <meta name="keywords" content="" /> <script type="application/x-javascript"> addEventListener("load", function () { setTimeout(hideURLbar, 0); }, false); function hideURLbar() { window.scrollTo(0, 1); } </script> <link href="css/bootstrap.css" rel='stylesheet' type='text/css' /> <link rel="stylesheet" href="css/flexslider.css" type="text/css" media="screen" property="" /> <link href="css/style.css" rel='stylesheet' type='text/css' /> <link href="css/simpleLightbox.css" rel='stylesheet' type='text/css' /> <link href="css/fontawesome-all.css" rel="stylesheet"> <link href="http://fonts.googleapis.com/css?family=Poppins:100i,200,200i,300,400,400i,500,500i,600,600i,700,700i,800" rel="stylesheet"> </head> <body> <header> <div class="header_top" id="home"> <nav class="navbar navbar-toggleable-md navbar-light bg-faded"> <a class="navbar-brand" href="index.html"> <i class="fab fa-digital-ocean"></i> 金泽科技</a> <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mx-auto tp-nav text-center"> <li class="nav-item active"> <a class="nav-link" href="index.html">首页 <span class="sr-only">(current)</span> </a> </li> <li class="nav-item"> <a class="nav-link" href="about.html">关于</a> </li> <li class="nav-item"> <a class="nav-link" href="了解银豹.html">解决方案</a> </li> <li class="nav-item"> <a class="nav-link" href="blog.html">博客</a> </li> <li class="nav-item"> <a class="nav-link" href="contact.html">联系我们</a> </li> </ul> <form action="#" method="post" class="form-inline my-2 my-lg-0 search"> <input class="form-control mr-sm-2" type="search" placeholder="点击输入搜索..." name="Search" required> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">搜索</button> </form> </div> </nav> </div> </header> <!--//header--> </body> </html> ``` 网页2 轮播图代码: ``` <!DOCTYPE html> <html> <head> <link rel="icon" href="images/favicon.ico" type="img/x-ico" /> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>山东金泽网络科技有限公司</title> <link rel="stylesheet" href="css/style.css" /> </head> <body> <div class="c-banner"> <div class="banner"> <ul> <li><img src="img/lunbo1.jpg"></li> <li><img src="img/lunbo2.jpg"></li> <li><img src="img/lunbo3.jpg"></li> </ul> </div> <div class="nexImg"> <img src="img/nexImg.png" /> </div> <div class="preImg"> <img src="img/preImg.png" /> </div> <div class="jumpBtn"> <ul> <li jumpImg="0"></li> <li jumpImg="1"></li> <li jumpImg="2"></li> </ul> </div> </div> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript"> //定时器返回值 var time=null; //记录当前位子 var nexImg = 0; //用于获取轮播图图片个数 var imgLength = $(".c-banner .banner ul li").length; //当时动态数据的时候使用,上面那个删除 // var imgLength =0; //设置底部第一个按钮样式 $(".c-banner .jumpBtn ul li[jumpImg="+nexImg+"]").css("background-color","black"); //页面加载 $(document).ready(function(){ // dynamicData(); //启动定时器,设置时间为3秒一次 time =setInterval(intervalImg,3000); }); //点击上一张 $(".preImg").click(function(){ //清楚定时器 clearInterval(time); var nowImg = nexImg; nexImg = nexImg-1; console.log(nexImg); if(nexImg<0){ nexImg=imgLength-1; } //底部按钮样式设置 $(".c-banner .jumpBtn ul li").css("background-color","white"); $(".c-banner .jumpBtn ul li[jumpImg="+nexImg+"]").css("background-color","black"); //将当前图片试用绝对定位,下一张图片试用相对定位 $(".c-banner .banner ul img").eq(nowImg).css("position","absolute"); $(".c-banner .banner ul img").eq(nexImg).css("position","relative"); //轮播淡入淡出 $(".c-banner .banner ul li").eq(nexImg).css("display","block"); $(".c-banner .banner ul li").eq(nexImg).stop().animate({"opacity":1},1000); $(".c-banner .banner ul li").eq(nowImg).stop().animate({"opacity":0},1000,function(){ $(".c-banner ul li").eq(nowImg).css("display","none"); }); //启动定时器,设置时间为3秒一次 time =setInterval(intervalImg,3000); }) //点击下一张 $(".nexImg").click(function(){ clearInterval(time); intervalImg(); time =setInterval(intervalImg,3000); }) //轮播图 function intervalImg(){ if(nexImg<imgLength-1){ nexImg++; }else{ nexImg=0; } //将当前图片试用绝对定位,下一张图片试用相对定位 $(".c-banner .banner ul img").eq(nexImg-1).css("position","absolute"); $(".c-banner .banner ul img").eq(nexImg).css("position","relative"); $(".c-banner .banner ul li").eq(nexImg).css("display","block"); $(".c-banner .banner ul li").eq(nexImg).stop().animate({"opacity":1},1000); $(".c-banner .banner ul li").eq(nexImg-1).stop().animate({"opacity":0},1000,function(){ $(".c-banner .banner ul li").eq(nexImg-1).css("display","none"); }); $(".c-banner .jumpBtn ul li").css("background-color","white"); $(".c-banner .jumpBtn ul li[jumpImg="+nexImg+"]").css("background-color","black"); } //轮播图底下按钮 //动态数据加载的试用应放在请求成功后执行该代码,否则按钮无法使用 $(".c-banner .jumpBtn ul li").each(function(){ //为每个按钮定义点击事件 $(this).click(function(){ clearInterval(time); $(".c-banner .jumpBtn ul li").css("background-color","white"); jumpImg = $(this).attr("jumpImg"); if(jumpImg!=nexImg){ var after =$(".c-banner .banner ul li").eq(jumpImg); var befor =$(".c-banner .banner ul li").eq(nexImg); //将当前图片试用绝对定位,下一张图片试用相对定位 $(".c-banner .banner ul img").eq(nexImg).css("position","absolute"); $(".c-banner .banner ul img").eq(jumpImg).css("position","relative"); after.css("display","block"); after.stop().animate({"opacity":1},1000); befor.stop().animate({"opacity":0},1000,function(){ befor.css("display","none"); }); nexImg=jumpImg; } $(this).css("background-color","black"); time =setInterval(intervalImg,3000); }); }); //动态数据轮播图 //动态数据加载的时候不要直接点击demo.html运行否则可能请求不到本地json数据 // function dynamicData(){ // $.ajax({ // url:"js/test.json", // type:"get", // dataType:"json", // success:function(data){ // if(data.code==1){ // var data = data.data; // $.each(data,function(i){ // $(".c-banner .banner ul").append('<li><img src="'+this.img+'"></li>'); // $(".c-banner .jumpBtn ul").append('<li jumpImg="'+i+'"></li>') // }) // } // //获取图片总数量 // imgLength = $(".c-banner .banner ul li").length; // //为底部按钮定义单击事件 // $(".c-banner .jumpBtn ul li").each(function(){ // //为每个按钮定义点击事件 // $(this).click(function(){ // clearInterval(time); // $(".c-banner .jumpBtn ul li").css("background-color","white"); // jumpImg = $(this).attr("jumpImg"); // if(jumpImg!=nexImg){ // var after =$(".c-banner .banner ul li").eq(jumpImg); // var befor =$(".c-banner .banner ul li").eq(nexImg); // // //将当前图片试用绝对定位,下一张图片试用相对定位 // $(".c-banner .banner ul img").eq(nexImg).css("position","absolute"); // $(".c-banner .banner ul img").eq(jumpImg).css("position","relative"); // // after.css("display","block"); // after.stop().animate({"opacity":1},1000); // befor.stop().animate({"opacity":0},1000,function(){ // befor.css("display","none"); // }); // nexImg=jumpImg; // } // $(this).css("background-color","black"); // time =setInterval(intervalImg,3000); // }); // }); // } // }) // } </script> <div style="text-align:center;margin:10px 0; font:normal 14px/24px 'MicroSoft YaHei';"> </div> </body> </html> ``` ```
bootstrap bssuggest无法更改下拉框的查询结果
![图片说明](https://img-ask.csdn.net/upload/201708/18/1503046283_675350.png)使用 bootstrap searsh suggest插件,省市区级联查询,代码如下,第一遍是可以的,但是改变省之后,查询市后台的数据是返回对应市下面的数据,但是市的搜索框可选项还是老的,由于插件无法代自定义参数,所以通过click事件来操作。 //查询省 $("#queryProvince").bsSuggest('init', { clearable: true, url: contextPath + "/area/findProvince", idField: "areaUniCode",//每组数据的哪个字段作为 data-id,优先级高于 indexId 设置(推荐) keyField: "areaName2",//每组数据的哪个字段作为输入框内容,优先级高于 indexKey 设置(推荐) effectiveFields: ["areaName2"] //有效显示于列表中的字段,非有效字段都会过滤,默认全部。 }).on('onDataRequestSuccess', function (e, result) {//当 AJAX 请求数据成功时触发,并传回结果到第二个参数 console.log('onDataRequestSuccess: ', result); }).on('onSetSelectValue', function (e, keyword) {//当从下拉菜单选取值时触发,并传回设置的数据到第二个参数 $("#queryAreaUniCode").val(keyword.id); queryAreaUniCode = $("#queryAreaUniCode").val(); paddingArea(1); console.log('onSetSelectValue: ', keyword); }).on('onUnsetSelectValue', function () {//当设置了 dField,且自由输入内容时触发(与背景警告色显示同步) console.log('onUnsetSelectValue'); }); //查询市 $('#queryCity').click(function () { var areaUniCode = $('#queryAreaUniCode').val(); var areaName = $('#queryCity').val().trim(); // $.get(contextPath + "/area/findCity", { areaUniCode: areaUniCode, areaName: areaName }, function (data) { // if (data != null) { var testdataBsSuggest = $("#queryCity").bsSuggest({ clearable: true, url: contextPath + "/area/findCity?areaUniCode="+areaUniCode+"&areaName=",//优先从url ajax 请求 json 帮助数据,注意最后一个参数为关键字keyField请求参数 multiWord: true, //以分隔符号分割的多关键字支持 idField: "areaUniCode",//每组数据的哪个字段作为 data-id,优先级高于 indexId 设置(推荐) keyField: "areaName3",//每组数据的哪个字段作为输入框内容,优先级高于 indexKey 设置(推荐) getDataMethod: 'url',//获取数据的方式,url:一直从url请求;data:从 options.data 获取;firstByUrl:第一次从Url获取全部数据,之后从options.data获取 effectiveFields: ["areaName2","areaName3"],//有效显示于列表中的字段,非有效字段都会过滤,默认全部。 effectiveFieldsAlias: {"areaName2":"省","areaName3":"市"}, // data: { // "value": data.value // } }).on('onDataRequestSuccess', function (e, result) {//当 AJAX 请求数据成功时触发,并传回结果到第二个参数 console.log('onDataRequestSuccess: ', result); }).on('onSetSelectValue', function (e, keyword) {//当从下拉菜单选取值时触发,并传回设置的数据到第二个参数 $("#queryAreaUniCode").val(keyword.id);//设置隐藏域 queryAreaUniCode = $("#queryAreaUniCode").val(); paddingArea(2); console.log('onSetSelectValue: ', keyword); }).on('onUnsetSelectValue', function () {//当设置了 idField,且自由输入内容时触发(与背景警告色显示同步) console.log('onUnsetSelectValue'); }); // } // }); });
jquery dataTable解析后台传回的json报错
JSP: ``` <table class="table table-striped table-hover table-bordered" id="sample_editable_1"> <thead> <tr> <th>实验室名称</th> <th>所属学院</th> <th>分类</th> <th>创建日期</th> <th>创建人</th> <th>编辑</th> <th>删除</th> </tr> </thead> <tbody> </tbody> ``` 前台js: ``` var oTable = $('#sample_editable_1').dataTable({ "aLengthMenu": [ [5, 15, 20, -1], [5, 15, 20, "All"] // change per page values here ], // set the initial value "iDisplayLength": 15, "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>", "sPaginationType": "bootstrap", "oLanguage": { "sLengthMenu": "_MENU_ 每页显示条数", "oPaginate": { "sPrevious": "上一页", "sNext": "下一页" } }, "aoColumns" : [{ "rows" : "labName" },{ "rows" : "academy" }, { "rows" : "category" } , { "rows" : "createTime" } , { "rows" : "createrName" } , { "rows" : "" }, { "rows" : "" }], "bProcessing":false, "bServerSide":true, "sAjaxSource":"/getAllLabInfo", "fnServerData":function ( sSource,aoData, fnCallback) { $.ajax({ url : sSource,//这个就是请求地址对应sAjaxSource data : {"aoData":JSON.stringify(aoData)},//这个是把datatable的一些基本数据传给后台,比如起始位置,每页显示的行数 type : 'post', dataType : 'json', async : false, success : function(result) { alert(result.rows[0].labName); fnCallback(result.rows);//把返回的数据传给这个方法就可以了,datatable会自动绑定数据的 }, error : function(msg) { } }); alert(aoData); } }); ``` 后台json: {"total":3,"rows":[{"createTime":"2016-05-12 17:01:30.000000","labName":"物理实验室","id":1,"category":"物理类","academy":"理学院","createrName":"sysadmin"},{"createTime":"2016-05-12 17:01:37.000000","labName":"化学实验室","id":2,"category":"化学类","academy":"理学院","createrName":"sysadmin"},{"createTime":"2016-05-12 17:01:40.000000","labName":"金工实习","id":3,"category":"车床打磨","academy":"主校区","createrName":"sysadmin"}]} 报错: ![图片说明](https://img-ask.csdn.net/upload/201605/12/1463066615_880510.jpg) ![图片说明](https://img-ask.csdn.net/upload/201605/12/1463066664_584182.jpg) 求大神解惑,整了一下午了,再不能只能改用easyui了
使用Apexcharts.js中的brush类型图表,上面的折线图无法刷新,求教问题在哪?
# Apexcharts.js中的brush类型图表无法刷新数据 求教各路大神,本人最近在做一个前端开发项目,需要用一张图来展现100个数据,这100个数据是从通过ajax请求从后端接收的,每10秒轮询一次,更新100个数据。 网上找到了开源库apexcharts.js,瞬间被高大上的brush类型图所吸引,引入到我在开发的程序中(网上demo图如下): ![图片说明](https://img-ask.csdn.net/upload/201907/06/1562392234_131426.jpg) 但是出现了下面柱状图数据刷新正常,而上面折线图无法刷新的问题,如下图所示,详细问题描述和代码也在下方,谢谢各位。 ![图片说明](https://img-ask.csdn.net/upload/201907/06/1562393740_668680.png) 我根据示例代码和官方网站上的doc进行了修改,并移植到开发的程序中。大致原理是:打开网页——前端按10秒钟轮询方式通过ajax发送请求到后端——后端python程序生成100个数据,通过json格式返回前端——前端更新数据并刷新图表 前端跟后端交互的代码如下 ``` var storm_data_s6a = ""; var strom_time_s6a = ""; $(document).ready(function(){ setInterval(function(){$.ajax({ type:"POST", url:"/sigStorm/", dataType:"json", contentType:"application/json", data:JSON.stringify({"S6a_storm":true,"Cx_storm":true,"Rejcall":true}), success:function(res){ storm_data_s6a = res.S6a_storm; storm_time_s6a = res.storm_time; //alert(storm_data_s6a[15]); stormFigure() } }) },100000); }); ``` 为了实现图表实时刷新的目的,防止重复新建插入图表,我在处理图表呈现时采用了“清空元素内容”,再“重新创建图表”的办法,代码如下: ``` function stormFigure() { var time1 = new Date(storm_time_s6a).getTime() var time2 = time1 - 1200000 var time3 = time1 - 5940000 var data1 = generateDayWiseTimeSeries(new Date(time3).getTime(), 100, { min: 30, max: 90 }); var options1 = { chart: { id: "chart2", type: "area", height: 230, foreColor: "#ccc", toolbar: { autoSelected: "pan", show: false } }, colors: ["#00BAEC"], stroke: { width: 3 }, grid: { borderColor: "#555", yaxis: { lines: { show: false } } }, dataLabels: { enabled: true }, fill: { gradient: { enabled: true, opacityFrom: 0.55, opacityTo: 0 } }, markers: { size: 5, colors: ["#000524"], strokeColor: "#00BAEC", strokeWidth: 3 }, series: [ { name: "S6a_flow", data: data1 } ], tooltip: { x:{ show: true, format: 'HH:mm' }, theme: "dark" }, xaxis: { type: "datetime", }, yaxis: { tickAmount: 10, min: 0, max: 250, } }; $("#chart-area").empty(); var chart1 = new ApexCharts(document.querySelector("#chart-area"), options1); chart1.render(); //chart1.updateSeries([{ data: data1 }]); //chart1.updateOptions(null,false,false,false); var options2 = { chart: { id: "chart1", height: 130, type: "bar", foreColor: "#ccc", brush: { target: "chart2", enabled: true }, selection: { fill: { color: "#fff", opacity: 0.4 }, xaxis: { min: time2, max: time1 } } }, colors: ["#FF0080"], series: [ { name: "S6a_flow", data: data1 } ], stroke: { width: 2 }, grid: { borderColor: "#444" }, markers: { size: 0 }, xaxis: { type: "datetime", tooltip: { enabled: false } }, yaxis: { tickAmount: 2, min: 0, max: 200 } }; $("#chart-bar").empty(); var chart2 = new ApexCharts(document.querySelector("#chart-bar"), options2); chart2.render(); } ``` 但是在程序运行后,就出现了上面的折线图不能刷新的情况(重新打开网页可以)。下面的柱状图刷新没有问题。 可以确认的是,数据是没有问题的,我把chart2 options2中的brush.enable置为false后,折线图也可以实时刷新。但是我翻遍了官网,也未能得到brush设置的有效指导。 此问题已困扰我几天,求教各位大神和曾经使用过ApexCharts工具的大神给予指导,不胜感激~
ajax 调用外部函数,外部函数中的ajax不执行
tab(); function tab() { //alert("name:"+name); $("#table") .bootstrapTable({ url: "scol/player.action", method: 'get', //请求方式(*) toolbar: '#formTools', //工具按钮用哪个容器 striped: true, //是否显示行间隔色 cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) pagination: true, //是否显示分页(*) queryParams: function(params) { return { offset: params.offset, limit: params.limit, sname: $('#sname').val(), sposi: $('#sposi').val(), roles: $('#roles').val() }; }, pageSize: 4, //每页的记录行数(*) pageNumber: 1, //初始化加载第一页,默认第一页 pageList: [2, 4, 6], singleSelect: false, showColumns: true, sortable: true, //是否启用排序 sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*) strictSearch: true, minimumCountColumns: 2, //最少允许的列数 clickToSelect: true, //是否启用点击选中行 showRefresh: false, //是否显示刷新按钮 uniqueId: "id", //每一行的唯一标识,一般为主键列 cardView: false, //是否显示详细视图 search: true, strictSearch: true, showColumns: true, showRefresh: true, showExport: true, onLoadError: function(data) { $('#stuinfo').bootstrapTable('removeAll'); }, columns: [{ field: 'id', title: '球员号码' }, { field: 'name', title: '球员姓名' }, { field: 'posi', title: '位置' }, { field: 'cm', title: '身高/CM' }, { field: 'kg', title: '体重/KG' }, { field: 'home', title: '籍贯' }, { field: 'birth', title: '出生日期' }, { field: 'ps', title: '备注' }, /* { field : 'yid', title : '入队时间' }, */ { field: 'year.year', title: '入队时间' }, { title: '状态', field: '', align: 'center', formatter: function(value, row, index) { var s="123"; $.ajax({ url: 'scol/eec.action', type: 'post', data: { pid: row.id }, dataType: 'json', async : false, beforeSend: function(jqXHR, settings) { }, success: function(data3, textStatus) { if(textStatus == "success") { var s1=data3.point[data3.point.length-1]; var s2=data3.point[data3.point.length-2]; if(s1-s2>8){ s="red;'>上升" }else if(s2-s1>8){ s="gray;'>下滑" }else if(s1==null||s2==null) { s="goldenrod;'>未知" } else{ s="lawngreen;'>正常" } } }, error: function(jqXHR, textStatus, errorThrown) { //充当catch(e)的角色 alert("失败!"); } }); var w = "<span style='color:"+s+"</span> "; return w ; } }, { title: '操作', field: '', align: 'center', formatter: function(value, row, index) { var w = '<a href="#" mce_href="#" onclick="detail(\'' + row.id + '\')">详细信息</a> '; var e = '<a href="#" mce_href="#" onclick="edit1(\'' + row.id+'\',\''+row.name+ '\',\'' +row.posi+ '\',\''+row.cm+ '\',\''+row.kg+ '\',\''+row.home+ '\',\''+row.birth + '\',\''+row.ps+ '\',\''+row.yid+ '\',\''+row.tid+ '\')">编辑</a> '; var d = '<a href="#" mce_href="#" onclick="del(\'' + row.id + '\',\''+row.name+'\')">删除</a> '; return w + e + d; } } ], onDblClickRow: function(row, $element) { eechart(row); } }); }; /* 删除 */ function del(pid,pname) { if(confirm("确定删除" + pname + "吗?")){ $.ajax({ url: 'scol/dps.action', type: 'post', data: { pid: pid }, dataType: 'text', /* async : false, */ beforeSend: function(jqXHR, settings) { }, success: function(data3, textStatus) { if(textStatus == "success") { alert("用户删除" + data3); $('#table').bootstrapTable('destroy'); tab(); } }, error: function(jqXHR, textStatus, errorThrown) { //充当catch(e)的角色 alert("删除失败!"); } });} }; ``` ```
easyui搜索框查询回来的数据怎么显示出来啊
1.我现在问题是,在打开页面的时候,调用后台的一个方法,把表格所有的数据 显示在了datagrid上,现在想在页面加个搜索框,输入用户名,点击搜索的时 候,后台会根据前端传来的参数,调用另一个方法执行相关的查询语句,然后把数据返回给前端。 ===问题来了,前端接收到数据后,怎么显示在已经获取了所有数据的在datagrid上呢? 这我相关的代码 ``` <body> <script > $(function (){ var flag ; // 判断新增和修改方法 var url;//全局变量,存储点击对话框保存按钮后,提交请求的URL地址 $('#a').datagrid({ idField:'id',//只要创建数据表格 就必须要加 idField fitColumns:true,//宽度自适应 url:'/ssm/getOperator', //geiOperator会查出表里所有数据 checkOnSelect:true,//为false,当用户仅在点击该复选框的时候才会被选中或取消。 fitColumns: true, columns:[[ {field:'id',checkbox:true}, {field:'operator_id',title:'编号',width:100,halign:'center',align:'center'}, {field:'username',title:'账户',width:100,halign:'center',align:'center'}, {field:'password',title:'密码',width:100,halign:'center',align:'center'}, {field:'operator_name',title:'姓名',width:100,halign:'center',align:'center'} ]], pagination:true,//在底部显示分页 pageSize:'5',//每页显示多少个 pageList:[5,10,20], ``` ``` $('#btn3').click(function(){ var operator_name=document.getElementById('searchbtn').value; var operator={"operator_name":operator_name}; var jsonData= JSON.stringify(operator); $.ajax({ type: 'post' , url: "/ssm/findOperByName" , cache:false , data:jsonData, dataType:'json' , contentType : "application/json;charset=UTF-8", success:function(result){ //1 关闭窗口 /* $('#mydialog').dialog('close'); */ //2刷新datagrid /* $('#a').datagrid('reload'); */ /* $('#a').datagrid('clearSelections'); */ //获取表头数据成功后,使用easyUi的datagrid去生成表格 }, error:function(result){ alert("执行失败"); } }); ``` btn3就是我点击搜索的按钮。但搜索成功后数据不会显示在表格里 如果能解决,可以有偿
web前端动态图表无法刷新数据,请教问题在哪?
# Apexcharts.js中的brush类型图表无法刷新数据 求教各路大神,本人最近在做一个前端开发项目,需要用一张图来展现100个数据,这100个数据是从通过ajax请求从后端接收的,每10秒轮询一次,更新100个数据。 网上找到了开源库apexcharts.js,瞬间被高大上的brush类型图所吸引,引入到我在开发的程序中(网上demo图如下): ![图片说明](https://img-ask.csdn.net/upload/201907/06/1562392234_131426.jpg) 但是出现了下面柱状图数据刷新正常,而上面折线图无法刷新的问题,如下图所示,详细问题描述和代码也在下方,谢谢各位。 ![图片说明](https://img-ask.csdn.net/upload/201907/06/1562393740_668680.png) 我根据示例代码和官方网站上的doc进行了修改,并移植到开发的程序中。大致原理是:打开网页——前端按10秒钟轮询方式通过ajax发送请求到后端——后端python程序生成100个数据,通过json格式返回前端——前端更新数据并刷新图表 前端跟后端交互的代码如下 ``` var storm_data_s6a = ""; var strom_time_s6a = ""; $(document).ready(function(){ setInterval(function(){$.ajax({ type:"POST", url:"/sigStorm/", dataType:"json", contentType:"application/json", data:JSON.stringify({"S6a_storm":true,"Cx_storm":true,"Rejcall":true}), success:function(res){ storm_data_s6a = res.S6a_storm; storm_time_s6a = res.storm_time; //alert(storm_data_s6a[15]); stormFigure() } }) },100000); }); ``` 为了实现图表实时刷新的目的,防止重复新建插入图表,我在处理图表呈现时采用了“清空元素内容”,再“重新创建图表”的办法,代码如下: ``` function stormFigure() { var time1 = new Date(storm_time_s6a).getTime() var time2 = time1 - 1200000 var time3 = time1 - 5940000 var data1 = generateDayWiseTimeSeries(new Date(time3).getTime(), 100, { min: 30, max: 90 }); var options1 = { chart: { id: "chart2", type: "area", height: 230, foreColor: "#ccc", toolbar: { autoSelected: "pan", show: false } }, colors: ["#00BAEC"], stroke: { width: 3 }, grid: { borderColor: "#555", yaxis: { lines: { show: false } } }, dataLabels: { enabled: true }, fill: { gradient: { enabled: true, opacityFrom: 0.55, opacityTo: 0 } }, markers: { size: 5, colors: ["#000524"], strokeColor: "#00BAEC", strokeWidth: 3 }, series: [ { name: "S6a_flow", data: data1 } ], tooltip: { x:{ show: true, format: 'HH:mm' }, theme: "dark" }, xaxis: { type: "datetime", }, yaxis: { tickAmount: 10, min: 0, max: 250, } }; $("#chart-area").empty(); var chart1 = new ApexCharts(document.querySelector("#chart-area"), options1); chart1.render(); //chart1.updateSeries([{ data: data1 }]); //chart1.updateOptions(null,false,false,false); var options2 = { chart: { id: "chart1", height: 130, type: "bar", foreColor: "#ccc", brush: { target: "chart2", enabled: true }, selection: { fill: { color: "#fff", opacity: 0.4 }, xaxis: { min: time2, max: time1 } } }, colors: ["#FF0080"], series: [ { name: "S6a_flow", data: data1 } ], stroke: { width: 2 }, grid: { borderColor: "#444" }, markers: { size: 0 }, xaxis: { type: "datetime", tooltip: { enabled: false } }, yaxis: { tickAmount: 2, min: 0, max: 200 } }; $("#chart-bar").empty(); var chart2 = new ApexCharts(document.querySelector("#chart-bar"), options2); chart2.render(); } ``` 但是在程序运行后,就出现了上面的折线图不能刷新的情况(重新打开网页可以)。下面的柱状图刷新没有问题。 可以确认的是,数据是没有问题的,我把chart2 options2中的brush.enable置为false后,折线图也可以实时刷新。但是我翻遍了官网,也未能得到brush设置的有效指导。 此问题已困扰我几天,求教各位大神和曾经使用过ApexCharts工具的大神给予指导,不胜感激~
python爬取ashx页面的post请求
我以一个类似的情况来提问,也是论坛中有个网友1年前提出的问题,但是他没有写出后续.... 网页地址:http://www.lzggzyjy.cn/InfoPage/InfoList.aspx?SiteItem=8 需求:python post请求获取该页面(感觉很简单) 分析页面: ![图片说明](https://img-ask.csdn.net/upload/201803/18/1521356034_57752.png) ![图片说明](https://img-ask.csdn.net/upload/201803/18/1521356049_933670.png) 我把代码贴上来: ``` #! /usr/bin/env python3 # -*- coding:utf-8 –*- import requests import json import sys reload(sys) sys.setdefaultencoding('utf-8') def testDownloadLanZhou(): testUrl = 'http://www.lzggzyjy.cn/ajax/Controls_InfoListControl,App_Web_2ewqtbev.ashx?_method=getCurrentData&_session=rw' testHeaders = { 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36', 'Host':'www.lzggzyjy.cn', 'Referer':'http://www.lzggzyjy.cn/InfoPage/InfoList.aspx?SiteItem=8', 'X-Requested-With':'XMLHttpRequest', # "Content-Type":'text/plain;charset=UTF-8', "Cookie":'ASP.NET_SessionId=hcdc1tywt5dgszd5bziox4sc; SERVERID=b925605187c7d5d37f1395627a969c75|1521298751|1521298681' } # testParams = {'_method':'getCurrentData', '_session':'rw'} testData = {'currentPage':'1', 'Query':''} # 将dic 转换成json字符串 # jsonDataString = json.dumps(testData) # print(jsonDataString) # print(type(jsonDataString)) # # 对应每个参数添加换行隔开 # newString = jsonDataString.replace(',', '\n') # print(newString) resq = requests.post(testUrl, headers=testHeaders, data=testData) print(resq.content) ``` 这个请求怎么弄都不对,获取不到正确的html页面......请各位指点迷津
ssh 实体对象转jason 前台无法显示
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ include file="/public/head.jspf" %> <style type="text/css"> body { margin: 1px; } .searchbox { margin: -3; } </style> <script type="text/javascript"> $(function(){ $('#dg').datagrid({ //url地址改为请求categoryAction url:'forder_queryJoinUser.action', loadMsg:'Loading......', queryParams:{username:''}, fitColumns:true,//水平自动展开,如果设置此属性,则不会有水平滚动条,演示冻结列时,该参数不要设置 striped:true, //当数据多的时候不换行 nowrap:true, singleSelect:false, //如果为真,只允许单行显示,全显功能失效 //设置分页 pagination:true, //设置每页显示的记录数 pageSize:10, //设置可选的每页记录数,供用户选择,默认是10,20,30,40... pageList:[5,10,15,20], idField:'id',//指定id为标识字段,在删除,更新的时候有用,如果配置此字段,在翻页时,换页不会影响选中的项 toolbar: [{ iconCls: 'icon-edit', text:'更新订单', handler: function(){ //判断是否有选中行记录,使用getSelections获取选中的所有行 var rows = $("#dg").datagrid("getSelections"); if(rows.length == 0) { //弹出提示信息 $.messager.show({ //语法类似于java中的静态方法,直接对象调用 title:'错误提示', msg:'至少要选择一条记录', timeout:2000, showType:'slide', }); }else if(rows.length != 1) { //弹出提示信息 $.messager.show({ //语法类似于java中的静态方法,直接对象调用 title:'错误提示', msg:'每次只能更新一条记录', timeout:2000, showType:'slide', }); } else{ //弹出更新的页面 parent.$("#win").window({ title:"更新订单", width:350, height:250, content:'<iframe src="send_order_update.action" frameborder="0" width="100%" height="100%"/>' }); } } },'-',{ iconCls: 'icon-remove', text:'删除订单', handler: function(){ //判断是否有选中行记录,使用getSelections获取选中的所有行 var rows = $("#dg").datagrid("getSelections"); //返回被选中的行,如果没有任何行被选中,则返回空数组 if(rows.length == 0) { //弹出提示信息 $.messager.show({ title:'错误提示', msg:'至少要选择一条记录', timeout:2000, showType:'slide', }); } else { //提示是否确认删除,如果确认则执行删除的逻辑 $.messager.confirm('删除的确认对话框', '您确定要删除此项吗?', function(r){ if (r){ //1. 从获取的记录中获取相应的的id,拼接id的值,然后发送后台1,2,3,4 var ids = ""; for(var i = 0; i < rows.length; i ++) { ids += rows[i].id + ","; } ids = ids.substr(0, ids.lastIndexOf(",")); //2. 发送ajax请求 $.post("forder_deleteByIds.action",{ids:ids},function(result){ if(result == "true") { //将刚刚选中的记录删除,要不然会影响后面更新的操作 $("#dg").datagrid("uncheckAll"); //刷新当前页,查询的时候我们用的是load,刷新第一页,reload是刷新当前页 $("#dg").datagrid("reload");//不带参数默认为上面的queryParams } else { $.messager.show({ title:'删除异常', msg:'删除失败,请检查操作', timeout:2000, showType:'slide', }); } },"text"); } }); } } },'-',{ //查询按钮不是LinkButton,它有语法,但是也支持解析HTML标签 text:"<input id='ss' name='serach' />" }], rowStyler: function(index,row){ console.info("index" + index + "," + row) if(index % 2 == 0) { return 'background-color:#fff;'; } else { return 'background-color:#c4e1e1;'; } }, //同列属性,但是这些列将会冻结在左侧,大小不会改变,当宽度大于250时,会显示滚动条,但是冻结的列不在滚动条内 frozenColumns:[[ {field:'checkbox',checkbox:true}, {field:'id',title:'编号',width:60} ]], columns:[[ {field:'name',title:'收货人姓名',width:80}, {field:'phone',title:'收货人电话',width:100}, {field:'remark',title:'买家留言',width:100}, {field:'date',title:'创建日期',width:100}, {field:'total',title:'订单总价',width:100}, {field:'address',title:'收货地址',width:150}, {field:'user.id',title:'买家id',width:60}, {field:'user.login',title:'买家登录名',width:80}, {field:'status.status',title:'订单状态',width:100} ]] }); //把普通的文本框转化为查询搜索文本框 $('#ss').searchbox({ //触发查询事件 searcher:function(value,username){ //value表示输入的值 //获取当前查询的关键字,通过DataGrid加载相应的信息,使用load加载和显示第一页的所有行。 //如果指定了参数,它将取代'queryParams'属性。通常可以通过传递一些参数执行一次查询,通过调用这个方法会向上面url指定的action去发送请求,从服务器加载新数据。 $('#dg').datagrid('load',{ username: value }); }, prompt:'请输入搜索关键字' }); }); </script> </head> <body> <table id="dg"></table> </body> </html> `jsp代码 下面action: public String queryJoinUser() { // 用来存储分页的数据 pageMap = new HashMap<String, Object>(); System.out.println(username); // 根据关键字和分页的参数查询相应的数据 List<Forder> forderList = forderService.queryJoinUser(username, page, rows); pageMap.put("\"rows\"", forderList); pageMap.put("\"total\"", forderService.getCount(username)); System.out.println(pageMap); return "jsonMap"; } struts.xml <action name="forder_*" class="forderAction" method="{1}"> <result name="jsonMap" type="json"> <param name="root">pageMap</param> <param name="excludeProperties"> rows\[\d+\]\.post, rows\[\d+\]\.user\.pass, rows\[\d+\]\.user\.sex, rows\[\d+\]\.user\.phone, rows\[\d+\]\.user\.email, rows\[\d+\]\.status\.id </param> </result> <result name="bank"> /user/bank.jsp </result> </action> 执行后pageMap的输出: {"total"=1, "rows"=[Forder [id=1, name=张小, phone=1851663595, remark=是否被, date=null, total=14.00, post=4325232, addressrk=, date=null, total=100.00, post=dcvdf, address=市场v吃饭的]]} `` 没有报任何错误就是不显示![图片说明](https://img-ask.csdn.net/upload/201706/07/1496767475_187876.png) ``` ``` ```
bootstraptable-edit使用问题
![图片说明](https://img-ask.csdn.net/upload/201908/06/1565077495_685813.png) 外部的表格无法获取数据,检查contentType属性配置问题。 ``` $(function() { //初始化Table var oTable = new TableInit(); oTable.Init(); }); var TableInit = function() { var oTableInit = new Object(); //初始化Table oTableInit.Init = function() { $('#table').bootstrapTable({ url : 'list',//请求后台的URL(*) method : 'post',//请求方式(*) toolbar : '#toolbar',//工具按钮用哪个容器 striped : true,//是否显示行间隔色 cache : false,//是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) pagination : true,//是否显示分页(*) sortable : false,//是否启用排序 sortOrder : "asc",//排序方式 queryParams : oTableInit.queryParams,//传递参数(*) sidePagination : "server",//分页方式:client客户端分页,server服务端分页(*) pageNumber : 1,//初始化加载第一页,默认第一页 pageSize : 10,//每页的记录行数(*) pageList : [ 10, 25, 50, 100 ],//可供选择的每页的行数(*) search : true,//是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大 contentType : "application/x-www-form-urlencoded", strictSearch : true, showColumns : true,//是否显示所有的列 showRefresh : true,//是否显示刷新按钮 minimumCountColumns : 2,//最少允许的列数 clickToSelect : true,//是否启用点击选中行 height : 700,//行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 uniqueId : "id",//每一行的唯一标识,一般为主键列 showToggle : true,//是否显示详细视图和列表视图的切换按钮 cardView : false,//是否显示详细视图 detailView : false,//是否显示父子表 columns : [ { field : 'id', title : '编号' }, { field : 'name', title : '名字' }, { field : 'price', title : '价格' }, { field : 'operate', title : '操作', formatter : operateFormatter //自定义方法,添加操作按钮 }, ], rowStyle : function(row, index) { var classesArr = [ 'white', 'lightblue' ]; var strclass = ""; if (index % 2 === 0) {//偶数行 strclass = classesArr[0]; } else {//奇数行 strclass = classesArr[1]; } return { classes : strclass }; },//隔行变色 }); }; //得到查询的参数 oTableInit.queryParams = function(params) { var temp = {//这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的 limit : params.limit,//页面大小 //pageNumber: params.pageNumber,//页码 offset : params.offset }; return temp; }; return oTableInit; }; function operateFormatter(value, row, index) {//赋予的参数 return [ '<a href="#" style="color:blue;" οnclick="edit(' + row.id + ')">编辑</a>|', '<a href="#" style="color:red;" οnclick="del(' + row.id + ')">删除</a>', ].join(''); } ``` table-edit.js ``` (function($){ 'use strict'; $.extend($.fn.bootstrapTable.defaults, { editable: false }); var BootstrapTable = $.fn.bootstrapTable.Constructor, _init = BootstrapTable.prototype.init, _initBody = BootstrapTable.prototype.initBody, _onSort = BootstrapTable.prototype.onSort, _append = BootstrapTable.prototype.append, _initHeader = BootstrapTable.prototype.initHeader ; //添加编辑表格默认属性,如何edit设置为false时,表示该列不可编辑 $.extend(true,BootstrapTable.COLUMN_DEFAULTS,{ edit:{ type:'text'//目前只支持 文本:text 下拉:select 日期:date } }); BootstrapTable.prototype.init = function () { _init.apply(this, Array.prototype.slice.apply(arguments)); var that = this; that.prevEditRow = null;//上一次编辑的行 that.columns = {};//列配置信息 that.insertRowVal = {};//新插入行的默认值 that.enableAppend = true;//允许添加新行 if (that.options.editable) { var columnObj = this['getColumns'](); $.each(columnObj,function(i,obj){ $.each(obj,function(z,col){ if(!isNaN(col.fieldIndex) && col.fieldIndex >= 0){ if(col.checkbox)col.edit = false; that.columns['column'+col.fieldIndex] = col; that.insertRowVal[col.field] = ''; } }); }); //this.initEdit(); } }; /*BootstrapTable.prototype.initHeader = function(){ _initHeader.apply(this, Array.prototype.slice.apply(arguments)); this.$container.find('.fixed-table-header').addClass('success'); };*/ BootstrapTable.prototype.initBody = function () { var that = this; _initBody.apply(this, Array.prototype.slice.apply(arguments)); if (!that.options.editable) return; this.initEdit(); //如果列是下拉框,则转换值为对应的文本 $.each(that.columns,function(indx,col){ if(col.edit && col.edit.type == 'select'){ col.edit = $.extend({},$.fn.bootstrapSelect.defaults,col.edit); if(col.edit.data.length > 0){ that.$body.find('>tr').each(function(){ if(that.getData().length < 1)return true; var rowData = that.data[$(this).data('index')];//当前点击td所在行的数据 var $td = $(this).find('td').eq(col.fieldIndex); $.each(col.edit.data,function(i,data){ if(data[col.edit.valueField] == rowData[col.field]){ $td.html(data[col.edit.textField]); } }); }); } else if(col.edit.url){ $.ajax({ url:col.edit.url, type:'post', data:col.edit.paramsType == 'json' ? JSON.stringify(col.edit.params) : col.edit.params, dataType:'json', success: function(jsonLst) { col.edit.onLoadSuccess.call(this,jsonLst); that.$body.find('>tr').each(function(){ if(that.getData().length < 1)return true; var rowData = that.data[$(this).data('index')];//当前点击td所在行的数据 var $td = $(this).find('td').eq(col.fieldIndex); $.each(jsonLst,function(i,data){ if(data[col.edit.valueField] == rowData[col.field]){ $td.html(data[col.edit.textField]); } }); }); col.edit.data = jsonLst; col.edit.url = null; }, error: function(xhr, textStatus, errorThrown){ col.edit.onLoadError.call(this); col.edit.data = []; col.edit.url = null; throw col.field+' 列下拉框数据加载失败'; } }); } } }); }; //根据行号删除指定行 BootstrapTable.prototype.removeRow = function (rowNum) { var that = this; var len = that.options.data.length; if (isNaN(rowNum)){ return; } if(that.$body.find('.editable-select').data('index') != rowNum){ recover(that); } //删除数据 that.options.data.splice(rowNum,1); if (len === that.options.data.length){ return; } var oldClass = {};//保存被标记修改的样式 that.$body.find('>tr').each(function(indx){ if($(this).hasClass('editable-modify')){ if(indx > rowNum){ oldClass[indx-1] = 'editable-modify'; } else{ oldClass[indx] = 'editable-modify'; } } }); //this.prevEditRow = null; //this.$body.find('>tr').removeClass('editable-select'); that.initBody(); //将标记改变过行的样式从新设置回去 for(var key in oldClass){ that.$body.find('>tr').eq(key).addClass(oldClass[key]); } //this.initEdit(); //没有数据时给提示加上样式 if(that.getData().length < 1){ that.$body.find('>tr').addClass('no-records-found'); } }; BootstrapTable.prototype.append = function (){ var that = this; //if(!that.enableAppend)return; var oldClass = {};//保存被标记修改的样式 that.$body.find('>tr').each(function(indx){ if($(this).hasClass('editable-modify') || $(this).hasClass('editable-insert')){ oldClass[indx] = 'editable-modify'; } }); arguments[0] = $.extend({},that.insertRowVal,arguments[0]); _append.apply(this,Array.prototype.slice.apply(arguments)); if (that.options.editable){ //that.initEdit(); setTimeout(function (){ //将标记改变过行的样式从新设置回去 for(var key in oldClass){ that.$body.find('>tr').eq(key).addClass(oldClass[key]); } that.$body.find('>tr:last').addClass('editable-modify'); that.$body.find('>tr:last').addClass('editable-insert');//双重保险,防止在快速点击添加时,为给新增行设置editable-modify属性 that.$body.find('>tr:last').click(); },60); } }; BootstrapTable.prototype.onSort = function () { _onSort.apply(this, Array.prototype.slice.apply(arguments)); var that = this; if (that.options.editable) { this.initEdit(); } }; BootstrapTable.prototype.getData = function () { return (this.searchText || this.searchCallback) ? this.data : this.options.data; }; BootstrapTable.prototype.getColumns = function () { return this.options.columns; }; /** * 获取有被修改过行的值 */ BootstrapTable.prototype.getModiDatas = function (){ var that = this; var datas = []; that.$body.find('.editable-modify').each(function(){ if(that.data[$(this).data('index')]){ datas.push(that.data[$(this).data('index')]); } }); return datas; }; /** * 获取指定列的和,参数为列下标 */ BootstrapTable.prototype.getColTotal = function (num){ var retVal = 0; this.$body.find('>tr').each(function(){ var colNum = 0; if($(this).hasClass('editable-select')){ colNum = $(this).find('td').eq(num).find('input').val(); } else{ colNum = $(this).find('td').eq(num).html(); } if(!isNaN(colNum)){//是数字才做想加 retVal += Number(colNum); } }); return retVal; }; /** * 创建可编辑表格 */ BootstrapTable.prototype.initEdit = function(){ var that = this, data = this.getData(); //this.$body.find('> tr').unbind('click').on('click' //this.$body.delegate('>tr','click' this.$body.find('> tr').unbind('click').on('click',function(){ var $tr = $(this); if($tr.hasClass('editable-select') || data.length < 1 || $tr.hasClass('no-records-found')){ return; } $tr.removeClass('no-records-found'); recover(that); that.prevEditRow = $tr; $tr.addClass('editable-select');//给当前编辑行添加样式,目前样式为空只做标识使用 that.$body.find('> tr').not(this).removeClass('editable-select'); $tr.find('td').closest('td').siblings().html(function(i,html){ initTrClick(that,this); }); }); //鼠标点击事件 $(document).bind('mousedown',function(event){ var $target = $(event.target); if(!($target.parents().andSelf().is(that.$body)) && !($target.parents().andSelf().is($('.datetimepicker')))){ setTimeout(function () { recover(that); //that.prevEditRow = null; //that.$body.find('> tr').removeClass('editable-select'); },10); }; }); }; $.fn.bootstrapTable.methods.push('getColumns', 'getModiDatas','removeRow','getColTotal'); /** * 给tr添加点击事件 */ function initTrClick(that,_this){ that.enableAppend = true; var $td = $(_this); var $tr = $td.parent(); var rowData = that.data[$tr.data('index')];//当前点击td所在行的数据 var tdIndex = $tr.children().index($td);//当前点击的td下标 var tdOpt = that.columns['column'+tdIndex]; if(!tdOpt.edit || typeof tdOpt.edit != 'object'){ return ; } $td.data('field',tdOpt.field); if(!$td.data('oldVal')){ $td.data('oldVal',$.trim(rowData[tdOpt.field])); } var height = $td.innerHeight() - 3; var width = $td.innerWidth() - 2; $td.data('style',$td.attr('style'));//保存原来的样式 $td.attr('style','margin:0px;padding:1px!important;'); var placeholder = ''; if(tdOpt.edit.required == true){ placeholder = '必填项'; } var value = rowData[tdOpt.field] == null || rowData[tdOpt.field] == ''?'':rowData[tdOpt.field]; $td.html('<div style="margin:0;padding:0;overflow:hidden;border:solid 0px red;height:'+(height)+'px;width:'+(width)+'px;">' +'<input type="text" placeholder="'+placeholder+'" value="'+value+'" style="margin-left: 0px; margin-right: 0px; padding-top: 1px; padding-bottom: 1px; width:100%;height:100%">' +'</div>'); $td.width(width); var $input = $td.find('input'); if(!tdOpt.edit.type || tdOpt.edit.type == 'text'){ if(tdOpt.edit['click'] && typeof tdOpt.edit['click'] === 'function'){ $input.unbind('click').bind('click',function(event){ tdOpt.edit['click'].call(this,event); }); } if(tdOpt.edit['focus'] && typeof tdOpt.edit['focus'] === 'function'){ $input.unbind('focus').bind('focus',function(event){ tdOpt.edit['focus'].call(this,event); }); } $input.unbind('blur').on('blur',function(event){ if(tdOpt.edit['blur'] && typeof tdOpt.edit['blur'] === 'function'){ tdOpt.edit['blur'].call(this,event); } }); } else if(tdOpt.edit.type == 'select'){ $input.bootstrapSelect(tdOpt.edit); } else if(tdOpt.edit.type == 'date'){ $td.html('<div style="margin:0;padding:0;overflow:hidden;border:solid 0px red;height:'+(height)+'px;width:'+(width)+'px;" class="input-group date form_datetime" data-link-field="dtp_editable_input">' +'<input class="form-control" type="text" value="'+value+'">' +'<span class="input-group-addon"><span class="glyphicon glyphicon-th"></span></span>' +'</div>' +'<input type="hidden" id="dtp_editable_input" value="'+value+'"/>' ); that.$body.find('.form_datetime').datetimepicker({ weekStart: 1, todayBtn: 1, autoclose: 1, todayHighlight: 1, startView: 2, forceParse: 0, language:'zh-CN', format: 'yyyy-mm-dd hh:ii:ss', pickerPosition: 'bottom-left', showMeridian: 1 }); } } /** * 恢复tr,使之处于不可编辑状态 */ function recover(that){ var isModi = false;//判断行值是否变动过 if(that.prevEditRow != null){ that.prevEditRow.find('td').closest('td').siblings().html(function(i,html){ $(this).attr('style',$(this).data('style')); var textVal = $(this).find('input[type="text"]').val(); var hiddenVal = $(this).find('input[type="hidden"]').val(); if(typeof $(this).find('input[type="text"]').bootstrapSelect('getText') != 'object'){ $(this).find('input[type="text"]').bootstrapSelect('destroy'); } if(textVal != undefined){ if($(this).data('oldVal') != (hiddenVal?hiddenVal:$.trim(textVal)) && $(this).data('field')) { that.data[that.prevEditRow.data('index')][$(this).data('field')] = hiddenVal?hiddenVal:$.trim(textVal); isModi = true; } if(that.columns['column'+i].edit.required == true){ if(textVal == null || textVal == ''){ that.enableAppend = false; return '<span style="color:red;">必填项不能为空</span>'; } } return $.trim(textVal); } }); //新值跟旧值不匹配证明被改过 if(isModi || that.prevEditRow.hasClass('editable-insert')){ that.prevEditRow.addClass('editable-modify'); } else{ that.prevEditRow.removeClass('editable-modify'); } that.prevEditRow = null; that.$body.find('> tr').removeClass('editable-select'); } } })(jQuery); ``` 哪位大神能帮忙解决下
学习ztree遇到TypeError: tId is undefined,跪求大神
``` <!DOCTYPE html> <HTML> <HEAD> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="@routes.Assets.at("stylesheets/css/zTreeStyle/zTreeStyle.css")" type="text/css"> <script src="@routes.Assets.at("javascripts/jquery-1.9.0.min.js")" type="text/javascript"></script> <script type="text/javascript" src="@routes.Assets.at("javascripts/js/jquery.ztree.core-3.5.js")"></script> <SCRIPT type="text/javascript"> var zNodes; var setting = { data: { simpleData: { enable: true, idKey:"id", pIdKey:"pId", rootPId:0 } }, showLine : true, //是否显示节点间的连线 checkable : true //每个节点上是否显示 CheckBox }; $(document).ready(function(){ $.ajax({ async : false, cache:false, type: 'GET', dataType : "json", url: "/Application/getData",//请求的action路径 error: function () {//请求失败处理函数 alert('请求失败'); }, success:function(data){ //请求成功后处理函数。 alert(data); zNodes = data; //把后台封装好的简单Json格式赋给treeNodes } }); $.fn.zTree.init($("#treeDemo"), setting, eval(zNodes)); }); </SCRIPT> </HEAD> <BODY> <div class="content_wrap"> <div class="zTreeDemoBackground left"> <ul id="treeDemo" class="ztree"></ul> </div> </div> </BODY> </HTML> ``` 下面是Java部分代码: ``` public static Result getData() { String s1 = "{id:1, pId:0, name:\"test1\" , open:true}"; String s2 = "{id:2, pId:1, name:\"test2\" , open:true}"; String s3 = "{id:3, pId:1, name:\"test3\" , open:true}"; String s4 = "{id:4, pId:2, name:\"test4\" , open:true}"; List<String> lstTree = new ArrayList<String>(); lstTree.add(s1); lstTree.add(s2); lstTree.add(s3); lstTree.add(s4); return ok(Json.toJson(lstTree)); } ``` 下面是JSON返回的数据: ![ajax返回的数据](https://img-ask.csdn.net/upload/201511/23/1448266727_781564.png) 所用框架是play framework,求大神解惑,为什么会出现TypeError: tId is undefined的错误呢? # ![出现的错误](https://img-ask.csdn.net/upload/201511/23/1448266896_502181.png)
获得select中option的value值
``` request.getParameter("");获得selsct中option的value值 下拉框<option>由getdataset()初始化,用下拉框选择某个option后,datasetpath = request.getParameter("");怎么获得<option>中的value值(路径),option有多个每个都有对应的value ``` 。![图片说明](https://img-ask.csdn.net/upload/201804/07/1523074392_447307.png) 下拉框部分: ``` div class="col-xs-3"> select class="form-control" name="select_dataset" id="select_dataset" </select </div 初始化函数 function getdatasets(){ $.ajax({ type : "POST", url:"<%=contextPath%>/getDatasets", data : { type : "0", testname : "自动分类", }, dataType : "json", async : false, context : null, success : function(jsonData) { if (jsonData && jsonData != '[]') { //下拉菜单选项显示数据库名,值为数据库的真实地址 var dataList = jsonData; var select_dataset = $("#select_dataset"); select_dataset.html(''); var inner = ""; for(var i = 0; i<dataList.length; i++){ var a=0; for(j=0;j<=i;j++){ if(dataList[i].dataset==dataList[j].dataset) a++; else continue; } if(a<=1) inner += "<option value= '"+dataList[i].datasetpath +"'>" + dataList[i].dataset + "</option>"; else continue; //inner += "<option value='" + dataList.get(i).getDatasetPath() +"'>" + dataList.get(i).getDataset() + "</option>"; } $("#select_dataset").append(inner); } } }); } 请求: if(isupload == 1){ datasetpath = request.getParameter("select_dataset"); } ```
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
《阿里巴巴开发手册》读书笔记-编程规约
Java编程规约命名风格 命名风格 类名使用UpperCamelCase风格 方法名,参数名,成员变量,局部变量都统一使用lowerCamelcase风格 常量命名全部大写,单词间用下划线隔开, 力求语义表达完整清楚,不要嫌名字长 ...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
Python绘图,圣诞树,花,爱心 | Turtle篇
1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.speed('fastest') circle.up() square = turtle.Turtle()
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
为什么听过很多道理,依然过不好这一生?
记录学习笔记是一个重要的习惯,不希望学习过的东西成为过眼云烟。做总结的同时也是一次复盘思考的过程。 本文是根据阅读得到 App上《万维钢·精英日课》部分文章后所做的一点笔记和思考。学习是一个系统的过程,思维模型的建立需要相对完整的学习和思考过程。以下观点是在碎片化阅读后总结的一点心得总结。
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
Linux 命令(122)—— watch 命令
1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 [1] watch(1) manual
Linux 命令(121)—— cal 命令
1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 [1] cal(1) manual
记jsp+servlet+jdbc实现的新闻管理系统
1.工具:eclipse+SQLyog 2.介绍:实现的内容就是显示新闻的基本信息,然后一个增删改查的操作。 3.数据库表设计 列名 中文名称 数据类型 长度 非空 newsId 文章ID int 11 √ newsTitle 文章标题 varchar 20 √ newsContent 文章内容 text newsStatus 是否审核 varchar 10 news...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告(本文) 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问