jquery如何获取json 数据的值 比如要获取 datas 数组里的 issue值

{"success":1,"datas":[{"issue":"763028","kjcode":"14","kjcodes":"2,6,6","srccode":"01,14,17,19,20,21,25,30,33,34,40,44,53,55,56,58,59,75,79,80","time":"2016-06-05 11:20:00"},{"issue":"763027","kjcode":"17","kjcodes":"8,7,2","srccode":"04,08,09,13,14,20,21,22,23,25,27,29,34,42,54,58,59,65,67,74","time":"2016-06-05 11:15:00"},{"issue":"763026","kjcode":"13","kjcodes":"5,2,6","srccode":"03,07,08,14,20,23,25,35,45,48,49,50,51,64,68,69,76,78,79,80","time":"2016-06-05 11:10:00"},{"issue":"763025","kjcode":"14","kjcodes":"3,8,3","srccode":"05,11,13,28,32,34,35,37,43,50,51,52,61,63,64,67,68,70,74,78","time":"2016-06-05 11:05:00"},{"issue":"763024","kjcode":"16","kjcodes":"0,7,9","srccode":"04,05,14,17,19,21,24,28,30,34,35,36,40,43,46,49,59,62,74,78","time":"2016-06-05 11:00:00"}]}

2个回答

 var d = "{\"success\":1,\"datas\":[{\"issue\":\"763028\",\"kjcode\":\"14\",\"kjcodes\":\"2,6,6\",\"srccode\":\"01,14,17,19,20,21,25,30,33,34,40,44,53,55,56,58,59,75,79,80\",\"time\":\"2016-06-05 11:20:00\"},{\"issue\":\"763027\",\"kjcode\":\"17\",\"kjcodes\":\"8,7,2\",\"srccode\":\"04,08,09,13,14,20,21,22,23,25,27,29,34,42,54,58,59,65,67,74\",\"time\":\"2016-06-05 11:15:00\"},{\"issue\":\"763026\",\"kjcode\":\"13\",\"kjcodes\":\"5,2,6\",\"srccode\":\"03,07,08,14,20,23,25,35,45,48,49,50,51,64,68,69,76,78,79,80\",\"time\":\"2016-06-05 11:10:00\"},{\"issue\":\"763025\",\"kjcode\":\"14\",\"kjcodes\":\"3,8,3\",\"srccode\":\"05,11,13,28,32,34,35,37,43,50,51,52,61,63,64,67,68,70,74,78\",\"time\":\"2016-06-05 11:05:00\"},{\"issue\":\"763024\",\"kjcode\":\"16\",\"kjcodes\":\"0,7,9\",\"srccode\":\"04,05,14,17,19,21,24,28,30,34,35,36,40,43,46,49,59,62,74,78\",\"time\":\"2016-06-05 11:00:00\"}]}";
        d = JSON.parse(d);
        var ss = d.datas;
                for(var i in ss){
                    console.info(i);
                    console.info(ss[i].issue);
                }
shayixiong
shayixiong 你看一下,下面我写的,怎么不对呢?
3 年多之前 回复
shayixiong
shayixiong 回复lzj0327: 你的json 数据里有 \ 这是怎么出来的?
3 年多之前 回复
lzj0327
lzj0327 回复shayixiong: 什么意思?
3 年多之前 回复
shayixiong
shayixiong json 数据得格式化一下吗?
3 年多之前 回复
 $.ajax({
                url: 'handler2.ashx',
                type: 'GET',
                dataType: 'json',
                success: function (datas) {
                    var obj = JSON.stringify(datas);
                    //$.each(obj.success, function (index, item) {
                    //    console.log(item);
                    //    alert(item);
                    //})

                    alert(obj);
                }


                                    handle2.ashx   返回的就是这些  
                                    {"success":1,"datas":[{"issue":"763028","kjcode":"14","kjcodes":"2,6,6","srccode":"01,14,17,19,20,21,25,30,33,34,40,44,53,55,56,58,59,75,79,80","time":"2016-06-05 11:20:00"},{"issue":"763027","kjcode":"17","kjcodes":"8,7,2","srccode":"04,08,09,13,14,20,21,22,23,25,27,29,34,42,54,58,59,65,67,74","time":"2016-06-05 11:15:00"},{"issue":"763026","kjcode":"13","kjcodes":"5,2,6","srccode":"03,07,08,14,20,23,25,35,45,48,49,50,51,64,68,69,76,78,79,80","time":"2016-06-05 11:10:00"},{"issue":"763025","kjcode":"14","kjcodes":"3,8,3","srccode":"05,11,13,28,32,34,35,37,43,50,51,52,61,63,64,67,68,70,74,78","time":"2016-06-05 11:05:00"},{"issue":"763024","kjcode":"16","kjcodes":"0,7,9","srccode":"04,05,14,17,19,21,24,28,30,34,35,36,40,43,46,49,59,62,74,78","time":"2016-06-05 11:00:00"}]}
shayixiong
shayixiong 回复lzj0327: 好的。
3 年多之前 回复
lzj0327
lzj0327 回复shayixiong: 我很少用qq,加了也白家,有问题留个言就行了
3 年多之前 回复
shayixiong
shayixiong 多谢 好用了,可以加你QQ 吗?有时间向你多学习一下Jquery
3 年多之前 回复
lzj0327
lzj0327 回复shayixiong: 那直接去掉就行了
3 年多之前 回复
shayixiong
shayixiong unexpected character at line 1 column 2 of the JSON data
3 年多之前 回复
shayixiong
shayixiong 有Q吗?
3 年多之前 回复
shayixiong
shayixiong 回复lzj0327: 换成 JSON.parse出错
3 年多之前 回复
lzj0327
lzj0327 JSON.stringify(datas);的意思是将json转为string,要么换成JSON.parse,要么直接去掉那一句
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ajax获取不到php从数据库里面读取到的数据,(php读取到的数据已经成功转换成了json数据)
javascript代码: ```javascript // 初始化两个数组,盛装从数据库中获取到的数据 var dates = new Array(), moneys = new Array(); //调用ajax来实现异步的加载数据 function getusers() { $.ajax({ type: "post", async: false, data:{}, url: "dataDemo/dataIndex.php", data: {}, dataType: "json", success: function(result){ if(result){ for(var i = 0; i < result.length; i++){ dates.push(result[i].sum); moneys.push(result[i].money); } } }, error: function(errmsg) { alert("Ajax获取服务器数据出错了!"+ errmsg); } }); return dates, moneys; } //执行异步请求 getusers(); ``` public_function.php代码: ```php <?php function dbInit(){ global $con; $dsn = "mysql:dbname=info;localhost=127.0.0.1"; $user = "root"; $password = "644066YanMin&&!+"; try{ $con = new PDO($dsn,$user,$password); }catch(PDOExcepetion $e){ die ("Error!: " . $e->getMessage() . "<br/>"); } } /* 处理结果集中有多条数据的函数; */ function fetchAll($sql){ global $con; class user{ public $times; public $money; } if($result = $con->query($sql)){ //声明数组,用于接收结果集; $data = array(); //遍历结果集; while($row = $result->fetch(PDO::FETCH_ASSOC)){ $user = new User(); $user->times = $row['times']; $user->money = $row['sum']; $data[] = $user; } return $data; }else{ //执行失败; return false; } } ``` dataIndex.php代码 ```php <?php require "public_function.php"; dbInit(); $sql = 'select times,sum from date'; $datas = fetchAll($sql); // 返回JSON类型的数据 echo json_encode($datas); //$con = null; require "dataIndex.html"; ```
js读取ajax返回的对象数组问题
得到的数组为: Array( [0] = > AminoAcid Object ( title = >重庆市政府下招聘指标 link = >http://news.163.com description = > 毕业生高达1.3万以上 ) [1] = > AminoAcid Object ( title = >重庆市政府下招聘指标 link = >http://news.163.com description = > 毕业生高达1.3万以上 ) ...... ) 我用array[0]["title"]获得的值为undefined,请问应如何获取title的值?? [b]问题补充:[/b] 十分感谢 用json怎么返回,怎么解析 我是用的php 没有用过json数据 [b]问题补充:[/b] php端如何返回json数据呢 我在js端视用的jquery返回: success: function(json_datas) { //window.location.href = "xmlRead.php"; alert(json_datas); datas = eval("("+json_datas+")"); alert(datas); 结果 alert(json_datas);就是上面的数据 alert(datas); 没有弹出窗口, 请问是怎么回事 [b]问题补充:[/b] php如何返回json数据呢 [b]问题补充:[/b] 我在php里用了$json_str = php_json_encode(@$str); 怎么返回结果还是一样啊??? 还是上面的那个数组 [b]问题补充:[/b] 用的$json_str = json_encode(@$str); [b]问题补充:[/b] 那现在到底应该怎么搞啊 现在得到的就是那个数组,我要得到title的值,到底应该怎么办啊???? 急。。。。
小弟刚学 jquery 想问一下这样的json数据怎么远程调用
{ "success": 1, "datas": [ { "issue": "762903", "kjcode": "20", "kjcodes": "8,5,7", "srccode": "04,08,12,20,21,23,24,26,39,41,42,53,54,56,61,63,75,78,79,80", "time": "2016-06-04 15:50:00" }, { "issue": "762902", "kjcode": "19", "kjcodes": "8,3,8", "srccode": "13,23,28,29,30,35,38,41,46,49,54,55,63,65,67,68,72,73,75,76", "time": "2016-06-04 15:45:00" }, { "issue": "762901", "kjcode": "19", "kjcodes": "9,3,7", "srccode": "02,03,04,06,09,15,17,20,24,28,31,33,36,41,45,47,60,68,75,77", "time": "2016-06-04 15:40:00" }, { "issue": "762900", "kjcode": "7", "kjcodes": "0,2,5", "srccode": "01,09,12,13,17,18,19,20,27,32,44,50,52,53,55,59,60,66,69,75", "time": "2016-06-04 15:35:00" }, { "issue": "762899", "kjcode": "17", "kjcodes": "6,8,3", "srccode": "01,07,09,10,13,16,20,26,27,44,48,53,54,57,61,63,64,74,77,79", "time": "2016-06-04 15:30:00" } ] } 我这样写的不好用,请大神帮帮忙。 <script type="text/javascript"> $(function(){ $("#btn").click(function(){ $.getJSON("xy28.json", function (datas) { var $jsontip = $("#jsonTip"); var strHtml = "123";//存储数据的变量 $jsontip.empty();//清空内容 $.each(datas,function(infoIndex,info){ strHtml += "数据1:"+info["issue"]+"<br>"; strHtml += "数据1:"+info["kjcode"]+"<br>"; strHtml += "数据1:"+info["kjcodes"]+"<br>"; strHtml += "<hr>" }) $jsontip.html(strHtml);//显示处理后的数据 }) }) }) </script> </head> <body> <div id="divframe"> <div class="loadTitle"> <input type="button" value="获取数据" id="btn"/> </div> <div id="jsonTip"> </div> </div>
jquery ajax URL始终无法响应的问题
我想做一个简单的页面名字录入,点击确认按钮,名字上传到数据库的动作。由于是新手, 不太理解jquery ajax在同一页面的前后台通讯的问题。特别是URL要怎么写。是写个服务器上面的js文件地址?还是写一个js里面的函数,还是怎么办? 在node端的路由要如何写。在线求等! 起了服务器后,点击确认按钮,一直返回的都是error。 前端: $.ajax({ data: test, url: '../model/test.js', type: 'post', dataType: 'json', async: false, cache: false, timeout: 5000, success: function(data){ alert("success"); //var datas = JSON.parse(data); //if(200 == datas.code){ // window.alert(datas.message); // //$("#id_tip").val(datas.message); //}else{ // window.alert(datas.message); // // $("#id_tip").val(datas.message); //} if(data.msg =="true" ){ // view("修改成功!"); alert("修改成功!"); window.location.reload(); alert("修改成功!"); }else{ view(data.msg); } }, error: function(){ alert('error '); } }); 后端 router.get('/public/model/test.js/operSearch', function(req, res, next) { res.send("hello world"); //res.render('/add_metpage', { title: 'Express' }); });
ajax的值怎样传递到echarts中 series的data中
``` $(function(){ var xlm = { arr : [], init : function(){ //ajax 调用 $.ajax({ type:"GET", url:'1.json', dataType:"json", success:function(datas){ $.each(datas.data,function(i,n){ console.log(datas.data[i].title) }) } }); } }; xlm.init(); //图形 var dom = document.getElementById("container"); var myChart = echarts.init(dom); var app = {}; option = null; option = { title: { text: '某站点用户访问来源', subtext: '纯属虚构', x: 'center' }, tooltip: { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" }, legend: { orient: 'vertical', left: 'left', data: [] }, series: [{ name: '访问来源', type: 'pie', radius: '55%', center: ['50%', '60%'], data: [], itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } }] }; if(option && typeof option === "object") { myChart.setOption(option, true); } }) ``` 1.json值 ``` { "code": 0, "msg": "OK", "data": [ { "title": "a", "value": "72" }, { "title": "b", "value": "11" }, { "title": "c", "value": "1" }, { "title": "d", "value": "4" }, { "title": "e", "value": "6" }, { "title": "f", "value": "0" }, { "title": "g", "value": "3" }, { "title": "h", "value": "3" } ] } ```
我想用Jquery 获取 在线 json api 应该怎样写 谢谢大神位求有效方法
远程服务器 json 是这样的。 { "success": 1, "datas": [ { "issue": "762903", "kjcode": "20", "kjcodes": "8,5,7", "srccode": "04,08,12,20,21,23,24,26,39,41,42,53,54,56,61,63,75,78,79,80", "time": "2016-06-04 15:50:00" }, { "issue": "762902", "kjcode": "19", "kjcodes": "8,3,8", "srccode": "13,23,28,29,30,35,38,41,46,49,54,55,63,65,67,68,72,73,75,76", "time": "2016-06-04 15:45:00" }, { "issue": "762901", "kjcode": "19", "kjcodes": "9,3,7", "srccode": "02,03,04,06,09,15,17,20,24,28,31,33,36,41,45,47,60,68,75,77", "time": "2016-06-04 15:40:00" }, { "issue": "762900", "kjcode": "7", "kjcodes": "0,2,5", "srccode": "01,09,12,13,17,18,19,20,27,32,44,50,52,53,55,59,60,66,69,75", "time": "2016-06-04 15:35:00" }, { "issue": "762899", "kjcode": "17", "kjcodes": "6,8,3", "srccode": "01,07,09,10,13,16,20,26,27,44,48,53,54,57,61,63,64,74,77,79", "time": "2016-06-04 15:30:00" } ] } 这是我写的,但是获取不到。 <script type="text/javascript"> $.ajax({ dataType: 'jsonp', type: "GET", jsonp: "callback", url: 'https://www.cha28.cn/api/xy28.json', success: function (data) { //处理data数据 // $('body').append("kjcode: " + data); alert("aa"); } }); </script>
如何动态添加数组??求大神指教
就是如何床架数组后,循环添加到数组里面。 我的代码:function sendRequest(){ $(function(){ $("#trOne").css({color:"LightGray"}); var dataSouce = {}; var datas={}; $.ajax({ url: 'struts_demo_one.action', data:{url:"http://localhost:8888/xmlSix/testOne.xml"}, dataType: "json", success: function (data) { // var datasr=eval(data); // http://10.108.67.47:9081/B2C40/modules/test.xml $.each(data.xml.PNRINFO.PASSENGERS,function(index,value){ if(value.INDEX != 1){ alert(value.INDEX); datas=[{'PNRNO':value.PNRNO,'OFFICECODE':value.OFFICECODE,'INDEX':value.INDEX,'NAME':value.NAME,'BIRTH':value.BIRTH,'TYPE':value.TYPE,'AGE':value.AGE}]; alert(datas); } }); dataSouce.item=datas; dataSouce.CONFIG=data.xml.PNRINFO.CONFIG; dataSouce.GROUPNAME=data.xml.PNRINFO.GROUPNAME; dataSouce.USERLARGECLIENTID=data.USERLARGECLIENTID; $("#dataGrid").bindTemplate({ source:dataSouce, template: $("#template-userinfo") }); } }); }); }
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); ``` 哪位大神能帮忙解决下
echarts值已经给data了就是不显示效果
$(document).ready(function () { console.log("不是缓存,jquery加载"); function setOption(datas) { var myChart = echarts.init(document.getElementById('china-map')); var option = { title: { text: '', subtext: '', x: 'center' }, tooltip: {//提示框组件。 trigger: 'item'//数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。 }, legend: { orient: 'horizontal',//图例的排列方向 x: 'left',//图例的位置 data: ['全国分布'] }, visualMap: {//颜色的设置 dataRange x: 'left', y: 'center', splitList: [ {start: 1500}, {start: 900, end: 1500}, {start: 310, end: 1000}, {start: 200, end: 300}, {start: 10, end: 200, label: '10 到 200(自定义label)'}, {start: 5, end: 5, label: '5(自定义特殊颜色)', color: 'black'}, {end: 10} ], // min: 0, // max: 2500, // calculable : true,//颜色呈条状 text: ['客流量高', '客流量低'],// 文本,默认为数值文本 color: ['#E0022B', '#E09107', '#A3E00B'] }, toolbox: {//工具栏 show: true, orient: 'vertical',//工具栏 icon 的布局朝向 x: 'right', y: 'center', feature: {//各工具配置项。 mark: {show: true}, dataView: {show: true, readOnly: false},//数据视图工具,可以展现当前图表所用的数据,编辑后可以动态更新。 restore: {show: true},//配置项还原。 saveAsImage: {show: true}//保存为图片。 } }, roamController: {//控制地图的上下左右放大缩小 图上没有显示 show: true, x: 'right', mapTypeControl: { 'china': true } }, series: [ { name: '订单量', type: 'map', mapType: 'china', roam: false,//是否开启鼠标缩放和平移漫游 itemStyle: {//地图区域的多边形 图形样式 normal: {//是图形在默认状态下的样式 label: { show: true,//是否显示标签 textStyle: { color: "rgb(249, 249, 249)" } } }, emphasis: {//是图形在高亮状态下的样式,比如在鼠标悬浮或者图例联动高亮时 label: {show: true} } }, top: "3%",//组件距离容器的距离 data: datas } ] }; console.log(option.series[0].data[0].value); } myChart.setOption(option); var datas = []; function getMapData() { $.ajax({ type: "post", url: "${link.contextPath}/shops/selectShopMap", dataType: "json", success: function (result) { if (result) { console.log(result); for (var i = 0; i < result.length; i++) { var sname = result[i].name; var svalue = result[i].value; var datashop = {name: sname, value: svalue} datas.push(datashop); } console.log(datas); setOption(datas);//执行setOption函数。传参 /* myChart.setOption({ series: [{ data: datas }], });*/ } }, error: function () { alert("错误"); myChart.hideLoading(); } }); myChart.on('mouseover', function (params) { var dataIndex = params.dataIndex; console.log(params); }); } getMapData(); }) ![图片说明](https://img-ask.csdn.net/upload/201812/29/1546069892_358309.png) console.log(option.series[0].data[0].value); ![图片说明](https://img-ask.csdn.net/upload/201812/29/1546070027_782008.png) ![图片说明](https://img-ask.csdn.net/upload/201812/29/1546069909_163759.png)
jquery.ajax struts2 不能返回数据
``` jquery.ajax struts2 采用上下文方式获取response, 提交两次才能提交到struts里,而且不能返回,偶尔能返回,这是在IE上的,在firefox不能访问,代码如下: 前端代码: <script src="jquery-3.0.0.js"></script> <script> $(document).ready(function(){ $("button").click(function(){ var username= document.getElementById("name").value; var password = document.getElementById("password").value; alert(username+" "+password); //var json = {"name":username,"password":password}; $.ajax({ type:"get", url:"http://127.0.0.1:8080/AjaxJsonStruts1/login.action", async:true, //data:"json="+JSON.stringify(json), data:"name="+username+"&password="+password, success:function(datas){ alert(datas); }, error:function(){ alert("登录出错"); //window.open("error.html"); } }); }); }); </script> </head> <body> <form> 用户名:<input type="text" id="name" /><br /> 密码: <input type="password" id="password"/><br /> <button>登录</button><br /> <!--<button id="register">注册</button>--> </form> 后台: <struts> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <constant name="struts.devMode" value="true"/> <constant name="struts.i18n.encoding" value="UTF-8" /> <package name="default" extends="struts-default" > <action name="login" class="com.action.LoginAction" method="login"/> <action name="register" class="com.action.RegisterAction"/> </package> </struts> package com.action; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.ws.Response; import net.sf.json.JSONObject; import org.apache.struts2.ServletActionContext; import com.bean.User; import com.opensymphony.xwork2.ActionSupport; import com.sun.xml.xsom.impl.WildcardImpl.Other; public class LoginAction extends ActionSupport{ private HttpServletRequest request; private HttpServletResponse response; public LoginAction(){ request = ServletActionContext.getRequest(); response = ServletActionContext.getResponse(); } public void login() throws IOException{ //System.out.println("begin"); //response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Cache-Control", "no-cache"); response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); /*String jsonstring = request.getParameter("json"); JSONObject json = JSONObject.fromObject(jsonstring);*/ User user = new User(); String name = request.getParameter("name"); String password = request.getParameter("password"); user.setName(name); user.setPassword(password); //user = (User) JSONObject.toBean(json, User.class); System.out.println("user : "+user.getName()+" : "+user.getPassword()); String answer=""; if("admin".equals(user.getName())&&"123456".equals(user.getPassword())){ System.out.println("success"); answer="success"; }else{ System.out.println("erorrr"); answer="error"; } out.print(answer); out.flush(); out.close(); } public HttpServletRequest getRequest() { return request; } public void setRequest(HttpServletRequest request) { this.request = request; } public HttpServletResponse getResponse() { return response; } public void setResponse(HttpServletResponse response) { this.response = response; } } ```
不进Struts拦截器,麻烦帮解决,谢谢~~~~~
test.jsp <%@ page contentType="text/html;charset=GB2312"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>AJAX提交请求测试页面</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <script type="text/javascript" src="js/jquery-1.8.0.js"></script> <script type="text/javascript" src="js/json.js"></script> </head> <script language="javascript"> $(document).ready(function(){ $("#btn").click(function(){ $.ajax({ url: "Essa", type: "POST", data: {"AppCode":"51601","DataSets":"1","Datas":"[{'name':'fsg','pwd':'1'}]"}, dataType: "json", success:function(data) { var jsonStr = eval("("+data+")"); alert(data); //document.getElementById("info").innerHTML = "retAppCode: [ "+jsonStr.retAppCode+" ] DataSets: [ "+jsonStr.retDataSets+" ] 信息:[ "+jsonStr.retDatas[0].info+" ] "; //alert("success:OperCode="+jsonStr.OperCode); //alert("success:DataSets="+jsonStr.DataSets); //alert("success:Datas[0].name="+jsonStr.Datas[0].name); //alert("success:Datas[0].age="+jsonStr.Datas[0].age); }, error:function(data) { alert("error:"); } }); }); }); </script> <body> <div id="info"></div> <s:submit value="%{getText('test')}" id="btn"/> </body> </html> struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <include file="struts-default.xml"/> <package name="essa" extends="json-default"> <interceptors> <interceptor name="myInterceptor" class="com.essa.Interceptor.MyInterceptor"> <param name="filterURISwitch">/welcome.html;/login;/html/help;</param></interceptor> <interceptor-stack name="myDefaultStack"> <interceptor-ref name="myInterceptor" /> <interceptor-ref name="json" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <default-interceptor-ref name="myDefaultStack" /> <default-action-ref name="index"></default-action-ref> <global-results> <result name="failPage" type="redirect">/login.jsp</result> </global-results> <action name="index"> <result type="redirect">/welcome.html</result> </action> <action name="Essa" class="com.essa.action.EssaAction"> <result type="json"><param name="root">result</param></result> </action> <action name="LoginAction" class="com.essa.action.LoginAction"> <result name="LoginOK" type="dispatcher">/website/home.jsp</result> <result name="LoginFail" type="redirect">/loginFail.html</result> <result name="Normal" type="redirect">/welcome.html</result> <result name="Help" type="dispatcher">/html/help/help.html</result> </action> </package> <constant name="struts.locale" value="zh_CN"></constant> <constant name="struts.i18n.encoding" value="UTF-8" /> <constant name="struts.action.extension" value="action"/> </struts> 拦截器 package com.essa.Interceptor; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; /** * @name MyInterceptor * @time 2015-06-20 * @version 1.0.0 * @author ZhangDongxu */ public class MyInterceptor implements Interceptor { private static Logger logger = Logger.getLogger(MyInterceptor.class .getName()); private HttpServletRequest request; private HttpSession session; private ServletContext application; private ActionContext context; private String filterURISwitch ; private String sessionUID; private String sessionPASS; /** * 自定义拦截器执行的代码 作用:拦截请求 * */ private static final long serialVersionUID = 1L; public String getFilterURISwitch() { return filterURISwitch; } public void setFilterURISwitch(String filterURISwitch) { this.filterURISwitch = filterURISwitch; } public void destroy() { } public void init() { } public String intercept(ActionInvocation invocation) throws Exception { logger.info(">>>>>> [请求信息:执行了自定义拦截器的代码!!!!=============================]"); System.out.println("===================================================="); System.out.println(this.filterURISwitch); System.out.println("===================================================="); String filterURISwitch = this.filterURISwitch;// 分号分隔的过滤器路径,即哪些不需要进行资源过滤拦截:例如/essa/welcome.html;/essa/html/help.html操作手册 String[] noFilterURIs;// 临时数组 System.out.println("过滤前提示"); System.out.println("===================================="); System.out.println("+++++++++++++++++++++++++++++++++++++++++++++"); System.out.println("获取不需要进行过滤URI的初始化参数值: " + filterURISwitch); noFilterURIs = filterURISwitch.split(";"); int pathFilterLength = filterURISwitch.split(";").length; int filesFilterLength = filterURISwitch.split("\\.").length - 1; int pathsSize = pathFilterLength - filesFilterLength; // 不需要过滤的具体请求的页面,带扩展名 String[] noDealURIPages = new String[filesFilterLength]; // 不需要过滤的路径 // 控制用户访问权限 context = invocation.getInvocationContext(); request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST); session = request.getSession(); String[] noDealURIPaths = new String[pathFilterLength]; String currentURI = request.getRequestURI();// 当前请求的页面URI String ctx = request.getContextPath(); currentURI = currentURI.substring(ctx.length()); System.out.println("currentURI = " + currentURI); // 提取不需要过滤的页面及路径数组,便于进行过滤 int j = 0; int k = 0; for (int i = 0; i < pathFilterLength; i++) { if (noFilterURIs[i].split("\\.").length == 2) { noDealURIPages[j] = noFilterURIs[i]; j++; } else { noDealURIPaths[k] = noFilterURIs[i]; k++; } } System.out.println("1、不需要进行过滤安全保护的静态资源路径数量 = " + pathsSize); for (int i = 0; i < k; i++) { System.out.println("paths = " + noDealURIPaths[i]); } System.out.println("2、不需要进行过滤安全保护的访问页面资源数量 = " + filesFilterLength); for (int i = 0; i < j; i++) { System.out.println("pages = " + noDealURIPages[i]); } System.out.println("+++++++++++++++++++++++++++++++++++++++++++++"); // 基于实际请求的情况,判断session中UID和具体的PASS是否存在,进行业务操作。所有的判断安全均在ACTION中完成。过滤器不进行业务方面的操作 if (currentURI.equalsIgnoreCase("/LoginAction.action")) { // 获取JSON结构中的data:UID,PASS值 sessionUID = request.getParameter("name"); sessionPASS = request.getParameter("pwd"); session.setAttribute("sessionUID", sessionUID); session.setAttribute("sessionPASS", sessionPASS); // 放行。让其走到下个链或目标资源中 return "LoginOK"; } // 判断是否是配置不进行过滤的页面 for (int i = 0; i < noDealURIPages.length; i++) { if (currentURI.equalsIgnoreCase(noDealURIPages[i]) && (session.getAttribute("sessionUID") != null || session.getAttribute("sessionPASS") != null)) { System.out.println("noDealURIPages=" + noDealURIPages[i]); // 放行。让其走到下个链或目标资源中 return "Normal"; } } // 判断是否是配置不进行过滤的路径 for (int i = 0; i < noDealURIPaths.length; i++) { if (currentURI.substring(0, currentURI.lastIndexOf("/")) .equalsIgnoreCase(noDealURIPaths[i]) || currentURI.equalsIgnoreCase(noDealURIPaths[i]) && (session.getAttribute("sessionUID") != null || session.getAttribute("sessionPASS") != null)) { System.out.println("noDealURIPaths=" + noDealURIPaths[i]); // 放行。让其走到下个链或目标资源中 return "Help"; } } // 如果不是上述情况,则判断是否存在UID和PASS,并进行逻辑操作链 if (session.getAttribute("sessionUID") == null || session.getAttribute("sessionPASS") == null) { session.invalidate(); //res.sendRedirect("http://localhost/login/login.html"); return "failPage"; } return invocation.invoke();// "failPage" } } 不进拦截器,test.jsp直接返回error
Ajax点击按钮,没有反应
test.jsp <%@ page contentType="text/html;charset=GB2312"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>AJAX提交请求测试页面</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <script type="text/javascript" src="js/jquery-1.8.0.js"></script> <script type="text/javascript" src="js/json.js"></script> </head> <script language="javascript"> $(document).ready(function(){ $("#btn").click(function(){ $.ajax({ url: "AjaxEventHandleAction", type: "POST", data: {"AppCode":"50201A","DataSets":"2","Datas":"[{'name':'jim','age':'20'},{'name':'jim','age':'20'}]"}, dataType: "json", success:function(data) { var jsonStr = eval("("+data+")"); //alert(data); document.getElementById("info").innerHTML = "retAppCode: [ "+jsonStr.retAppCode+" ] DataSets: [ "+jsonStr.retDataSets+" ] 信息:[ "+jsonStr.retDatas[0].info+" ] "; //alert("success:OperCode="+jsonStr.OperCode); //alert("success:DataSets="+jsonStr.DataSets); //alert("success:Datas[0].name="+jsonStr.Datas[0].name); //alert("success:Datas[0].age="+jsonStr.Datas[0].age); }, error:function(data) { alert("error:"); } }); }); }); </script> <body> <div id="info"></div> <s:submit value="%{getText('test')}" id="btn"/> </body> </html> Web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>welcome.html</welcome-file> <welcome-file>login.html</welcome-file> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <listener> <listener-class>com.essa.config.InitSys</listener-class> </listener> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <error-page> <error-code>404</error-code> <location>/error.jsp</location> </error-page> <error-page> <exception-type>java.lang.Exception</exception-type> <location>/error.jsp</location> </error-page> <error-page> <exception-type>401</exception-type> <location>/error.jsp</location> </error-page> <error-page> <exception-type>500</exception-type> <location>/error.jsp</location> </error-page> </web-app> Struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <include file="struts-default.xml"/> <package name="essa" extends="json-default"> <interceptors> <interceptor name="essaBoundaryInterceptor" class="com.essa.Interceptor.essaBoundaryInterceptor"> <param name="filterURISwitch">/welcome.html;/login;/html/help;</param> </interceptor> <interceptor-stack name="essaDefaultStack"> <!-- interceptor-ref name="json" /--> <interceptor-ref name="essaBoundaryInterceptor" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <default-interceptor-ref name="essaDefaultStack" /> <default-action-ref name="DefaultAction" /> <global-results> <result name="failPage" type="redirect">/login.jsp</result> </global-results> <action name="DefaultAction" class="com.essa.action.DefaultAction"> <result name="LoginFail" type="redirect">/LoginFail.html</result> </action> <action name="AjaxEventHandleAction" class="com.essa.action.AjaxEventHandleAction"> <result type="json"><param name="root">result</param></result> </action> <action name="LoginAction" class="com.essa.action.LoginAction"> <result name="LoginOK" type="dispatcher">/website/home.jsp</result> <result name="LoginFail" type="redirect">/LoginFail.html</result> <result name="Normal" type="redirect">/welcome.html</result> <result name="Help" type="dispatcher">/html/help/help.html</result> </action> <!-- 当调用具体的分值结转申请、异议申请等后台执行转长的生成文件,静态化等时,先生成等待进度条,配置一个createStaticsESLFileAction,配置<interceptor-ref name="execAndWait"拦截器>注释 --> </package> <constant name="struts.i18n.encoding" value="UTF-8" /> <constant name="struts.action.extension" value="action"/> </struts> Action: package com.essa.action; import java.io.IOException; import net.sf.json.JSONObject; import org.apache.log4j.Logger; import com.essa.util.DealRequest; import com.essa.util.VertifyRequest; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; /** * @name EssaAction * @time 2015-06-20 * @version 1.0.0 * @author ZhangDongxu */ public class AjaxEventHandleAction extends ActionSupport { private static Logger logger = Logger.getLogger(AjaxEventHandleAction.class.getName()); private static final long serialVersionUID = 1L; private String result; private String AppCode ; private String DataSets ; private String Datas ; private int res = 999; public String getResult() { return result.trim(); } public void setResult(String result) { this.result = result.trim(); } public String getAppCode() { return AppCode.trim(); } public void setAppCode(String appCode) { AppCode = appCode.trim(); } public String getDataSets() { return DataSets.trim(); } public void setDataSets(String dataSets) { DataSets = dataSets.trim(); } public String getDatas() { return Datas.trim(); } public void setDatas(String datas) { Datas = datas.trim(); } public String execute(){ logger.info(">>>>>> [请求信息:AppCode = <"+AppCode+">,DataSets = <"+DataSets+">,Datas = <"+Datas+">]"); try { res = VertifyRequest.vertifyRequest(AppCode,DataSets,Datas); } catch (IOException e) {} if(res!=0){ logger.info(">>>>>> [请求校验失败:res = <"+res+">]"); result = VertifyRequest.getErrorResult(AppCode,res,Datas); } else{ logger.info(">>>>>> [请求校验成功:res = <"+res+">]"); result = DealRequest.getResult(AppCode,DataSets,Datas); } result = JSONObject.fromObject(result).toString(); return SUCCESS; } } /* * // ActionContext ac = ActionContext.getContext(); // String rand = ac.getSession().size()+""; System.out.println(name+pwd); Datas = "[{'name':'"+name+"','pwd':'"+pwd+"'}]"; System.out.println(Datas); logger.info(">>>>>> [锟斤拷锟斤拷锟斤拷息锟斤拷AppCode = <"+AppCode+">,DataSets = <"+DataSets+">,Datas = <"+Datas+">]"); try { res = VertifyRequest.vertifyRequest(AppCode,DataSets,Datas); } catch (IOException e) {} if(res!=0){ logger.info(">>>>>> [锟斤拷锟斤拷校锟斤拷失锟杰o拷res = <"+res+">]"); result = VertifyRequest.getErrorResult(AppCode,res,Datas); } else{ logger.info(">>>>>> [锟斤拷锟斤拷校锟斤拷晒锟斤拷锟絩es = <"+res+">]"); result = DealRequest.getResult(AppCode,DataSets,Datas); } result = JSONObject.fromObject(result).toString(); return "LoginOK"; */ 可以直接访问Action但是通过Ajax点击按钮访问的时候就没有访问 这个是拦截器: package com.essa.Interceptor; import org.apache.log4j.Logger; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; /** * @name MyInterceptor * @time 2015-06-20 * @version 1.0.0 * @author ZhangDongxu */ public class essaBoundaryInterceptor implements Interceptor { private static Logger logger = Logger.getLogger(essaBoundaryInterceptor.class.getName()); /** * 自定义拦截器执行的代码 * 作用:拦截请求 * */ private static final long serialVersionUID = 1L; public void destroy() {} public void init() {} public String intercept(ActionInvocation invocation) throws Exception { logger.info(">>>>>> [请求信息:执行了自定义拦截器的代码!!!!]"); return invocation.invoke(); } } 非常感谢
请大神帮忙看看关于jquery ajax非常小白的问题
前台的代码 ``` <table id="datas" border="1" cellspacing="0" style="border-collapse: collapse"> <tr> <th> 商品编号</th> <th> 商品名称</th> <th> 生产日期</th> <th> 是否过期</th> </tr> <tr id="template"> <td id="bianhao"> </td> <td id="mingcheng"> </td> <td id="riqi"> </td> <td id="guoqi"> </td> </tr> </table> ``` 后台的代码 ``` <?xml version="1.0" ?> <!DOCTYPE FTCS SYSTEM "futuretense_cs.dtd"> <FTCS Version="1.1"> <!-- Commodity/Action/testAjaxCRUD_commodity - - INPUT - - OUTPUT - --> <IF COND="Variables.crud=R"><THEN> <EXECSQL LIST="listShangPin" TABLE="cm_shangpinxinxi" SQL=" SELECT id shangpinbianhao shangpinmingcheng shengchanriqi shifouguoqi from cm_shangpinxinxi where status!='VO' AND id='Variables.xml_id' "/> <IF COND="listShangPin.#numRows!=0"><THEN> <LOOP LIST="listShangPin"> [{ xml_shangpinbianhao:'<CSVAR NAME="listShangPin.shangpinbianhao"/>', xml_shangpinmingcheng:'<CSVAR NAME="listShangPin.shangpinmingcheng"/>', xml_shengchanriqi:'<CSVAR NAME="listShangPin.shengchanriqi"/>', xml_shifouguoqi:'<CSVAR NAME="listShangPin.shifouguoqi"/>', xml_id:'<CSVAR NAME="listShangPin.id"/>' }] </THEN></IF> </THEN></IF> </FTCS> ``` .js代码 ``` $(document).ready(function(){ $.ajax({ type:"get", dataType:"json", url:"ContentServer?pagename=Commodity/Page/testAjaxCRUD_commodity", success:function(msg){ var data=msg.table; $.each(data,function(i,n){ alert(123); var row=$("#remplate").clone(); row.find("#bianhao").text(listShangPin.shangpinbianhao); row.find("mingcheng").text(listShangPin.shangpinminfcheng); row.find("riqi").text(listShangPin.shengchanriqi); row.find("guoqi").text(xml_shifouguoqi); }) } }) }) ``` 我要ajax访问后台是把数据库里的返回到前台显示,该怎么写,我这么写对吗,谁能知道我一下啊,我现在真的是一头雾水。
使用webupload,IE9频繁出现崩溃
做了个javaWeb项目,上传图片用的是webupload,但是用IE9,页面频繁崩溃! ```/* webuploader END */ var $wrap = $('#uploader'), flashVersion = (function () { var version; try { version = navigator.plugins['Shockwave Flash']; version = version.description; } catch (ex) { try { version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash') .GetVariable('$version'); } catch (ex2) { version = '0.0'; } } version = version.match(/\d+/g); return parseFloat(version[0] + '.' + version[1], 10); })(); if (!WebUploader.Uploader.support('flash') && WebUploader.browser.ie < 10) { // flash 安装了但是版本过低。 if (!flashVersion || (flashVersion < 11.5)) { //layer.alert("您当前浏览器flash插件版本较低,可能无法使用系统中功能,<a href='https://www.flash.cn/cdm/latest/flashplayerax_install_cn.exe'>点击升級</a>"); layer.confirm('您当前浏览器沒有flash,可能无法使用系统中功能,前往升级?', { btn : [ '确定', '取消' ]//按钮 }, function(index) { layer.close(index); //此处请求后台程序,下方是成功后的前台处理…… // var index = layer.load(0,{shade: [0.7, '#393D49']}, {shadeClose: true}); //0代表加载的风格,支持0-2 //window.location.href="www.hao123.com"; window.open('https://www.flash.cn/cdm/latest/flashplayerax_install_cn.exe'); }); // 压根就没有安转。 } else { //layer.alert("您当前浏览器沒有flash,可能无法使用系统中功能,<a href='https://www.flash.cn/cdm/latest/flashplayerax_install_cn.exe'>点击安裝</a>"); layer.confirm('您当前浏览器沒有flash,可能无法使用系统中功能,前往安装?', { btn : [ '确定', '取消' ]//按钮 }, function(index) { layer.close(index); //此处请求后台程序,下方是成功后的前台处理…… // var index = layer.load(0,{shade: [0.7, '#393D49']}, {shadeClose: true}); //0代表加载的风格,支持0-2 //window.location.href="www.hao123.com"; window.open('https://www.flash.cn/cdm/latest/flashplayerax_install_cn.exe'); }); } // return; } else if (!WebUploader.Uploader.support()) { layer.msg('Web Uploader 不支持您的浏览器!',{icon:6}); //return; } //var flag =true; var uploader = WebUploader.create({ auto: true, // swf文件路径 swf: '<%=basePath %>/static/webupload/Uploader.swf', // 文件接收服务端。 server:'<%=basePath %>/main/webuploader', // 选择文件的按钮。可选。 // 内部根据当前运行是创建,可能是input元素,也可能是flash. pick: '#picker', fileVal:'file', // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传! resize: false, formData: { folderId: "<%=requestBean.getFolderId()%>" }, accept: { title: 'Files', extensions: 'gif,jpg,jpeg,bmp,png,pdf,doc,docx,txt,xls,xlsx,ppt,pptx,zip,mp3,mp4,text,csv', mimeTypes: 'image/*,text/*' //word +',application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document' //excel +',application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' //ppt +',application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation' +',application/pdf' +',application/zip' +',application/csv' +',.csv' }, duplicate :true, //chunked: true, //分片处理 //chunkSize: 5 * 1024 * 1024, //每片5M chunkRetry:false,//如果失败,则不重试 //duplicate:false,//是否可重复选择同一文件 //fileSingleSizeLimit: 10*1024*1024,//限制大小10M,单文件 //fileSizeLimit: allMaxSize*1024*1024,//限制大小10M,所有被选文件,超出选择不上 fileNumLimit:20 }); // 当有文件被添加进队列的时候 uploader.on( 'fileQueued', function( file ) { var $list = $("#webuploaderList"); $list.append( '<div id="' + file.id + '" class="item">' + '<h4 class="info">' + file.name + '</h4>' + '<p class="state">等待上传...</p>' + '</div>' ); }); // 文件上传过程中创建进度条实时显示。 uploader.on( 'uploadProgress', function( file, percentage ) { $("#uploadfileQueue").css("display","block"); var $li = $( '#'+file.id ), $percent = $li.find('.progress .progress-bar'); // 避免重复创建 if ( !$percent.length ) { $percent = $('<div class="progress progress-striped active" style="width:300px; height:10px; border:2px solid #09F;">' + '<div class="progress-bar" role="progressbar" style="width: 0%;height:100%; background-color:#09F; text-align:center; line-height:10px; font-size:10px;">' + '</div>' + '</div>').appendTo( $li ).find('.progress-bar'); } $li.find('p.state').text('上传中...'); $percent.html( Math.round(percentage * 100) +"%" ); $percent.css( 'width', percentage * 100 + '%' ); }); uploader.on('uploadSuccess', function (file,response) { if(response.ISOK=='N'){ layer.msg(response.message); $('#' + file.id).find('p.state').text('上传出错:'+response.message); } else{ $('#' + file.id).find('p.state').text('已上传'); if(response.newFid){ newFid = response.newFid; } } }); uploader.on('uploadError', function (file) { //layer.msg('上传出错!'+handler); $('#' + file.id).find('p.state').text('上传出错!'); }); // 完成上传完了,成功或者失败,先删除进度条。 uploader.on( 'uploadComplete', function(file ) { $( '#'+file.id ).find('.progress').remove(); }); //所有文件上传完成 uploader.on('uploadFinished',function(file){ var changeList; $.ajax( { url: '<%=basePath %>/userSession/changeListBySwfUpload', dataType: "json", async:false, cache:false, success: function(data, textStatus, jqXHR) { changeList=data; }, error: function(jqXHR, textStatus, errorThrown) { //console.log(errorThrown); } }); if(changeList == undefined){ return false; } var v_div=$("<div style='width:600px'>"); var v_table=$("<table id='fileuploadsinfo'>").css("width","500px").appendTo(v_div); var v_hred_tr=$("<tr>").css("width","500px").css("height","40px"); $("<th>").text("文件名").css("width","200px").css("height","40px").appendTo(v_hred_tr); $("<th>").text("备注").css("width","300px").css("height","40px").appendTo(v_hred_tr); v_hred_tr.appendTo(v_table); $.each(changeList,function(idx,v_sel){ var v_body_tr=$("<tr>").css("width","500px").css("height","40px").attr("cFid",v_sel.cFId); $("<td>").text(v_sel.file).css("width","200px").css("height","40px").appendTo(v_body_tr); var v_rmk=$("<input type='text' class='remark'>").css("width",'90%').css("height","99%"); $("<td>").css("width","300px").css("height","40px").appendTo(v_body_tr).append(v_rmk); v_body_tr.appendTo(v_table); /* var v_div=$("<div ><span style='display: none' ><input type='text' name='cFId' value='"++"'/></span><span style='width: 100px' ><input type='text' name='cFReName' readonly='readonly' value='"+v_sel.file+"'/></span><span style='width: 400px' ><input type='text' name='cFNote'/></span></div>"); v_div.appendTo(v_form); */ //changeList.splice(idx,1); //return true; }); layer.open({ type: 1, title:"", area: ["500px", "300px"], content:v_div.html(), closeBtn:1, btnAlign: 'c', scrollbar:true, btn:['确定','取消'], yes: function(index, layero){ var jsonArray=[]; var v_flag=false; $("#fileuploadsinfo").find('tr').not(':eq(0)').each(function(idx,itr){ var v_cFid=$(itr).attr("cFid"); var v_remark=$(itr).find('.remark').val(); if($.trim(v_remark).length<=20){ jsonArray.push({"fileInfo":v_cFid+'_'+v_remark}); }else{ layer.msg("备注输入有误,请输入20位以内的备注信息"); v_flag=true; return false; } }); //var str= JSON.stringify(jsonArray) if(v_flag){ return false; } $.ajax({ url: '<%=basePath %>/main/saveNote', type: 'post', dataType: 'json', data:{datas:jsonArray}, async:false, success: function (data) { uploader.reset(); //alert(33); uploader.destory(); if(data.flag=="Y"){ layer.closeAll(); layer.msg("上传成功",{icon:6},function(){ if(newFid){//如果新增了文件夹则刷新父级窗口 parent.location.reload(); }else{ window.location.reload(); } }); } }, error: function(XMLHttpRequest, textStatus, errorThrown) { } }); } , btn2: function(index, layero){ if(newFid){//如果新增了文件夹则刷新父级窗口 parent.location.reload(); }else{ window.location.reload(); } } }); }); /* webuploader END */ ``` 崩溃错误描述如下 : 问题签名: 问题事件名称: APPCRASH 应用程序名: iexplore.exe 应用程序版本: 9.0.8112.16421 应用程序时间戳: 4d76255d 故障模块名称: Flash32_32_0_0_207.ocx 故障模块版本: 32.0.0.207 故障模块时间戳: 5ceb04d1 异常代码: c0000005 异常偏移: 002d7e64 OS 版本: 6.1.7601.2.1.0 .256.48 区域设置 ID: 2052 其他信息 1: 2826 其他信息 2: 2826ae5788d1601e09d13cfdc228c271 其他信息 3: a6c4 其他信息 4: a6c4ac129c9c2b4af725e35cc1a77c20 联机阅读隐私声明: http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0804 如果无法获取联机隐私声明,请脱机阅读我们的隐私声明: C:\Windows\system32\zh-CN\erofflps.txt
动态规划入门到熟悉,看不懂来打我啊
持续更新。。。。。。 2.1斐波那契系列问题 2.2矩阵系列问题 2.3跳跃系列问题 3.1 01背包 3.2 完全背包 3.3多重背包 3.4 一些变形选讲 2.1斐波那契系列问题 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n&gt;=2,n∈N*)根据定义,前十项为1, 1, 2, 3...
程序员,职场上请远离这种人!
对有些职场人来讲,甩锅就是一种生存手段。01.从大学打篮球说起上大学的时候喜欢打篮球,然后我又特别喜欢抢篮板,经常是跳起来的时候没事,落下来的时候偶尔会踩到别人的脚上,于...
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
一个读研让我损失了一百万的真实故事
关注我!只要10分钟,包你学会数据分析 毕业后,应该就业还是考研? 我刚出国留学那会儿,就惊讶的发现,外国local95%都不会选择读研 他们说,硕士学费很贵,时间宝贵,老板不认,所以很费 当几乎所有人都是本科学历时,硕士学历反而像个异类 在老板眼里,三年硕士远远不如3年的工作经验实用 他们甚至专门为拒绝高学历者发明了一个词,叫overoccupie...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给
shell脚本:备份数据库、代码上线
备份MySQL数据库 场景: 一台MySQL服务器,跑着5个数据库,在没有做主从的情况下,需要对这5个库进行备份 需求: 1)每天备份一次,需要备份所有的库 2)把备份数据存放到/data/backup/下 3)备份文件名称格式示例:dbname-2019-11-23.sql 4)需要对1天以前的所有sql文件压缩,格式为gzip 5)本地数据保留1周 6)需要把备份的数据同步到远程备份中心,假如...
聊聊C语言和指针的本质
坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。 很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是指针类型。 指针的作用就是,给出一个指针,取出该指针指向地址处的值。为了理解本质,我们从计算机模型说起...
为什么你学不过动态规划?告别动态规划,谈谈我的经验
动态规划难吗?说实话,我觉得很难,特别是对于初学者来说,我当时入门动态规划的时候,是看 0-1 背包问题,当时真的是一脸懵逼。后来,我遇到动态规划的题,看的懂答案,但就是自己不会做,不知道怎么下手。就像做递归的题,看的懂答案,但下不了手,关于递归的,我之前也写过一篇套路的文章,如果对递归不大懂的,强烈建议看一看:为什么你学不会递归,告别递归,谈谈我的经验 对于动态规划,春招秋招时好多题都会用到动态...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
如何安装 IntelliJ IDEA 最新版本——详细教程
IntelliJ IDEA 简称 IDEA,被业界公认为最好的 Java 集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主。IDEA 分为社区版和付费版两个版本。 我呢,一直是 Eclipse 的忠实粉丝,差不多十年的老用户了。很早就接触到了 IDEA...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
为什么要推荐大家学习字节码?
配套视频: 为什么推荐大家学习Java字节码 https://www.bilibili.com/video/av77600176/ 一、背景 本文主要探讨:为什么要学习 JVM 字节码? 可能很多人会觉得没必要,因为平时开发用不到,而且不学这个也没耽误学习。 但是这里分享一点感悟,即人总是根据自己已经掌握的知识和技能来解决问题的。 这里有个悖论,有时候你觉得有些技术没用恰恰是...
【超详细分析】关于三次握手与四次挥手面试官想考我们什么?
在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。 三次握手 当面试官问你为什么需要有三次握手、三次握手的作用、讲讲三次三次握手的时候,我想很多人会这样回答: 首先很多人会先讲下握...
压测学习总结(1)——高并发性能指标:QPS、TPS、RT、吞吐量详解
一、QPS,每秒查询 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。 二、TPS,每秒事务 TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一...
新程序员七宗罪
当我发表这篇文章《为什么每个工程师都应该开始考虑开发中的分析和编程技能呢?》时,我从未想到它会对读者产生如此积极的影响。那些想要开始探索编程和数据科学领域的人向我寻求建议;还有一些人问我下一篇文章的发布日期;还有许多人询问如何顺利过渡到这个职业。我非常鼓励大家继续分享我在这个旅程的经验,学习,成功和失败,以帮助尽可能多的人过渡到一个充满无数好处和机会的职业生涯。亲爱的读者,谢谢你。 -罗伯特。 ...
2019年Spring Boot面试都问了什么?快看看这22道面试题!
Spring Boot 面试题 1、什么是 Spring Boot? 2、Spring Boot 有哪些优点? 3、什么是 JavaConfig? 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Spring Boot 中禁用 Actuator 端点安全性? 7、如何在自定义端口上运行 Sprin...
【图解】记一次手撕算法面试:字节跳动的面试官把我四连击了
字节跳动这家公司,应该是所有秋招的公司中,对算法最重视的一个了,每次面试基本都会让你手撕算法,今天这篇文章就记录下当时被问到的几个算法题,并且每个算法题我都详细着给出了最优解,下面再现当时的面试场景。看完一定让你有所收获 一、小牛试刀:有效括号 大部分情况下,面试官都会问一个不怎么难的问题,不过你千万别太开心,因为这道题往往可以拓展出更多有难度的问题,或者一道题看起来很简单,但是给出最优解,确实很...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。 小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了下下事情的发生… 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过滤吗?,例如在游戏里,如果我们发送“你在干嘛?麻痹演员啊你?”,由于“麻痹”是一个敏感词,...
GitHub 标星 1.6w+,我发现了一个宝藏项目,作为编程新手有福了!
大家好,我是 Rocky0429,一个最近老在 GitHub 上闲逛的蒟蒻… 特别惭愧的是,虽然我很早就知道 GitHub,但是学会逛 GitHub 的时间特别晚。当时一方面是因为菜,看着这种全是英文的东西难受,不知道该怎么去玩,另一方面是一直在搞 ACM,没有做一些工程类的项目,所以想当然的以为和 GitHub 也没什么关系(当然这种想法是错误的)。 后来自己花了一个星期看完了 Pyt...
杭漂程序员2019的心路历程,还不起助学贷款,交不起房租,披荆斩棘终雨过天晴
一个杭漂2019的心酸历程,一路披荆斩棘终于还是雨过天晴。
我采访了同事,让他掏出了每天都会浏览的干货网站
前言只有光头才能变强。文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y在周六的晚上,我日常去到公司写文章。想写...
Java知识体系最强总结(2020版)
更新于2019-12-15 10:38:00 本人从事Java开发已多年,平时有记录问题解决方案和总结知识点的习惯,整理了一些有关Java的知识体系,这不是最终版,会不定期的更新。也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同进步,结交更多志同道合的朋友。特此分享给大家,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。 文章目录...
计算机专业的书普遍都这么贵,你们都是怎么获取资源的?
介绍几个可以下载编程电子书籍的网站。 1.Github Github上编程书资源很多,你可以根据类型和语言去搜索。推荐几个热门的: free-programming-books-zh_CN:58K 星的GitHub,编程语言、WEB、函数、大数据、操作系统、在线课程、数据库相关书籍应有尽有,共有几百本。 Go语言高级编程:涵盖CGO,Go汇编语言,RPC实现,Protobuf插件实现,Web框架实...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
相关热词 c#如何定义数组列表 c#倒序读取txt文件 java代码生成c# c# tcp发送数据 c#解决时间格式带星期 c#类似hashmap c#设置istbox的值 c#获取多线程返回值 c# 包含数字 枚举 c# timespan
立即提问