jsp页面关于异步加载问题

JSP页面中使用jQuery的load()方法加载入另一个JSP页面,发现一个很奇怪的问题,如果不传参过去页面就无法显示,以下是我没带参数的jQuery代码:
$(document).ready(function() {
$("#rightitem").load("selorder.jsp");
});
rightitem是显示selorder.jsp的div的id,本页面和selorder.jsp是在同一目录里,求大神帮忙看一下哪里有问题。

4个回答

哪个是传递过去的参数呢?先判断下是否传递了参数,如果没有,可以给个默认值,加载默认页面。

qq_28960567
冰烨未央 我没有想传任何参数,只是想在一个页面调用另一个页面进来,你的意思就是说load方法必须传参?给默认值加载默认页面要怎么做?我才刚开始学,不怎么会用
大约 4 年之前 回复

可以不用加其他参数。这些页面放在如果文件下?如果是web-inf下是不能这样访问的。报错信息是什么?还是什么错误都没有就是一个空白的,而且你确定load方法执行了么?

很奇怪的问题,你selorder 这个jsp里面内容清空,测试看看。


    $(document).ready(function () {
        $("#rightitem").load("selorder.jsp", function (d) { alert(d)/*看输出什么*/});
    });
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
高德地图异步在jsp页面加载
http://webapi.amap.com/maps?v=1.3 这是我用的高德地图的地址。 我用load方法,getScript方法异步加载都是不行。请各位大侠指教。
使用Jquery在一个jsp页面的一个div中异步加载子页面的问题
请先看代码: A页面的代码: <html> <head> <script type="text/javascript" src="js/jquery-1.7.2.js"></script> <script type="text/javascript" src="ab.js"></script> </head> <body> <input type="button" value="点我" id="a"> <div id="cont"></div> </body> </html> ad.js文件代码: $(function(){ alert("A页面"); $("#a").click(function(){ alert(加载B页面); $.load("B.jsp"); }); $("#b").click(function(){ alert("点我有反映"); }); }); B页面的代码: <script type="text/javascript" src="js/jquery-1.7.2.js"></script> <script type="text/javascript" src="ab.js"></script> <h1>我是B页面</h1> <input type="button" value="点不动" id="b"> 问题1:进入A页面的时候执行了alert("A页面")(这是正常的); 然后第一次点击 A页面的按钮,执行了一次{alert("A页面");alert(加载B页面);},B页面显示成功,B页面的按钮也能点。然后第二次点击A页面的按钮,{alert("A页面");alert(加载B页面);}连续执行了2次,B页面也加载了。第三次点击A页面的按钮,{alert("A页面");alert(加载B页面);}执行了4次,。。。往后B页面的加载就会越来越慢。感觉好像点击事件在不断的累积一样。求解? 问题2:我针对上面的问题,我把B页面的JS加载给去掉,或者把B页面的按钮点击事件响应写到另一个JS文件中去。这样的话我在B页面的按钮就点不动了, 我的目的是点击A页面的按钮,能加载B页面进来(不刷新A页面),同时B页面的按钮也同样可以执行点击事件(但是不要出现问题1的现象)。 真心求解 啊
ajax异步加载的问题,求大神给出思路
jsp原本有一个页面,上面有很多按钮,每一个按钮都用ajax返回一个html替换原jsp中的某一个div。。后来发生一个问题就是点击其他按钮后,没办法返回到最开始的页面,被替换的部分没办法在显示回来。后来我又写了一个返回按钮,把最开始被替换的部分重新封装到了一个html中。 问题来了,这一部分html中有一个仪表盘是我用js画出来的,再次引用后,这个仪表盘消失了
java直接请求jsp页面耗时
我用的ssh框架搭建的Javaweb项目,我的首页面的导航栏是从数据库获取数据,因此我在也首页面用JS写了一个页面加载时的异步函数数据库里面查询数据, 我直接访问controller,进入首页导航就能马上出来,但是我直接访问JSP页面就需要耗时5~6秒钟,这个什么原因啊
Ajax异步处理跳转不了
这是第一个jsp页面的代码,可以正常进入AjaxServlet ``` var xmlHttpRequest=null; //页面加载 window.onload=function(){ //获取按钮对象 var but=document.getElementById("login"); but.onclick=function(){ //处理ajax //对浏览器判断 if (window.ActiveXOject) { //IE xmlHttpRequest=new ActiveXOject(Microsoft.XMLHTTP); }else{ xmlHttpRequest=new XMLHttpRequest(); } //获取内容 var loginname=document.getElementById("loginname").value; var upassword=document.getElementById("upassword").value; var inputRand=document.getElementById("inputRand").value; //打开链接 xmlHttpRequest.open("get","AjaxServlet?loginname="+loginname+"&upassword="+upassword+"&inputRand="+inputRand+"&type=1"+"&random="+new Date().getTime(),true); //回调函数 xmlHttpRequest.onreadystatechange=AjaxCallBack; //发送 xmlHttpRequest.send(null); } }; //创建回调函数 function AjaxCallBack(){ if (xmlHttpRequest.readyState==4) { if (xmlHttpRequest.status==200) { //读取后台回传的数据 var content=xmlHttpRequest.responseText; var divObject=document.getElementById("resultdiv"); divObject.innerHTML=content; if (content=="登录成功") { window.location.href="index.jsp"; } } } } ``` 这是第二个jsp页面的代码,执行之后没有进入后台AjaxServlet,路径是没有错的 而且不光是进不了AjaxServlet,把URL改成随便的一个JSP页面或者Servlet也跳不过去 ``` var xmlHttpRequest=null; //页面加载 window.onload=function(){ //获取按钮对象 var but=document.getElementById("OK"); but.onclick=function(){ //处理ajax //对浏览器判断 if (window.ActiveXOject) { //IE xmlHttpRequest=new ActiveXOject(Microsoft.XMLHTTP); }else{ xmlHttpRequest=new XMLHttpRequest(); } //获取内容 var oldpassword=document.getElementById("oldpassword").value; var newpassword=document.getElementById("newpassword").value; var renewpassword=document.getElementById("renewpassword").value; //打开链接 //alert("执行到这里"); xmlHttpRequest.open("get","../../AjaxServlet?oldpassword="+oldpassword+"&newpassword="+newpassword+"&renewpassword="+renewpassword+"&type=2",true); //回调函数 xmlHttpRequest.onreadystatechange=AjaxCallBack; //发送 xmlHttpRequest.send(null); } }; //创建回调函数 function AjaxCallBack(){ if (xmlHttpRequest.readyState==4) { if (xmlHttpRequest.status==200) { //读取后台回传的数据 var content=xmlHttpRequest.responseText; var divObject=document.getElementById("resultdiv"); divObject.innerHTML=content; } } } ``` 我是初学者,如果是写法不对,想请教一下怎样在一个项目里面的多个JSP页面实现异步处理
Java模拟HTTP请求如何获取请求页面中ajax方法的返回值
我有一个AAA.JSP页面是通过加载百度的地图API的JS文件,再调用其中的ajax请求方法获取地理坐标。地理坐标在该ajax方法的返回参数中的。我现在需要在服务器端获取地理位置信息,因此我通过java程序模拟HTTP请求,去访问AAA.JSP,但因为ajax是异步的,模拟程序访问该页面的时候,其中的ajax方法还没执行结束,服务器就返回了该页面的静态HTML内容,导致我无法获取地理位置信息。请问如何让服务器端在ajax执行完毕之后再返回呢?或者有什么其他的方案能解决这个需求呢。
使用ajax和struts2,处理struts2返回结果的问题
首先主界面如下 ![图片说明](https://img-ask.csdn.net/upload/201607/22/1469201699_106243.jpg) 上边是导航栏,导航栏下的内容为根据导航栏中a标签异步加载的内容,此时是一个表单,对应后台是通过struts和hibernate进行数据库存储的操作。 现在的状况是,等struts返回后,会自动刷新整个页面,异步加载的内容就会消失,标签又回到了Home下(默认)。以下是我前后端部分的主要代码: jsp表单,表单的部分: ``` <button type="submit" class="btn btn-block btn-info btn-lg disabled" onclick="addAndUpdateCategories()">提交</button> ``` 对应的click点击事件(js): ``` function addAndUpdateCategories() { $.ajax({ type : "post", url : "addVipAction.action", data : $("#vipForm").serialize(), cache : false, dataType : "json", }); } ``` struts2中的action ``` public String addVip() throws Exception{ ServletRequest request = ServletActionContext.getRequest(); String msg = ""; Map<String, Object> map = new HashMap<String, Object>(); map.put("data", vip); map.put("msg",msg); result = map.toString(); return SUCCESS; } ``` 对应的配置文件 ``` <action name="addVipAction" class="loginAction" method="addVip"> <result type="json"> <param name="root">result</param> </result> </action> ``` 现在我想要的效果是:struts返回后只重新加载表单部分,或者将表单部分异步加载为别的页面,而不是重新刷新整个页面。我应该怎么做?
jsp前端页面bootstrap中nav导航栏点击效果不明显问题
``` //加载菜单代码 //使用ajax异步请求后台加载商品类型 $(document).ready(function(){ $.ajax({ dataType : 'json', type : 'POST', url : '${pageContext.request.contextPath}/listCategory.action', success : function(data) { // alert(JSON.stringify(data)); var content=""; // for(var i=0;i<data.length;i++){ // content+="<li class='active'><a href='${pageContext.request.contextPath}/findProductByCategory.action?id="+data[i].id+"'>"+data[i].categoryName+"</a></li>"; // alert(data[i].id+data[i].categoryName); // } for(var i=0;i<data.length;i++){ content+="<li class='active'><a onclick='findProductByCategory("+data[i].id+");'>"+data[i].categoryName+"</a></li>"; //alert(data[i].id+data[i].categoryName); } $("#categoryContent").html(content); } }); }); //导航条代码 <div class="container-fluid"> <nav class="navbar navbar-inverse"> <div class="container-fluid"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="${pageContext.request.contextPath }/index.jsp">首页</a> </div> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav" id="categoryContent"> </ul> <div class="navbar-form navbar-right" role="search"> <div class="form-group"> <input type="text" class="form-control" placeholder="Search" id="findName"> </div> <button class="btn btn-default" onclick="findGood()">Submit</button> </div> </div> </div> </nav> </div> 主要是菜单点击功能可以实现 不过没有点击效果 ```
EXTJS4动态树无法加载
在书上找了一个EXTJS4动态树分级加载的实例 index.jsp ---------- - <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>动态树系统</title> <link rel="stylesheet" type="text/css" href="extjs4/resources/css/ext-all.css" /> <link rel="stylesheet" type="text/css" href="css/icon.css" /> <script type="text/javascript" src="extjs4/ext-all-debug.js"></script> <script type="text/javascript" src="extjs4/locale/ext-lang-zh_CN.js"></script> <script type="text/javascript"> Ext.onReady(function(){ Ext.regModel("OrgInfo",{ fields:['orgId','name','count'] }); var myStore = new Ext.data.TreeStore({ model :'OrgInfo', nodeParam : 'orgId', proxy: { type: 'ajax', url: 'treeServer.jsp', reader: 'json' }, autoLoad:true, root: { name:'根结点', id: '-1' } }); Ext.create('Ext.tree.Panel',{ title: '分级异步加载树节点示例', renderTo: Ext.getBody(), width :250, height :150, columns: [{ xtype:'treecolumn', text:'公司名称', dataIndex:'name', width: 150, sortable:true },{ text:'员工人数', dataIndex:'count', flex: 1, sortable: true }], store : myStore, rootVisible: false }); }); </script> </head> <body><br> </body> </html> ---------- 这是前端的页面,可以正常显示 然后是服务端的代码,也是一个JSP treeServer.jsp ---------- <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <% response.setContentType("utf-8"); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); String orgId = request.getParameter("orgId"); String result=""; if("-1".equals(orgId)){ result ="[{name:'总公司',count:100,id:100}]"; }else if ("100".equals(orgId)){ result = "[{name:'分公司一',count:20,id:110,leaf:true},{name:'分公司二',count:80,id:120}]"; }else if("120".equals(orgId)){ result = "[{name:'部门一',count:30,id:121,leaf:true},{name:'部门二',count:50,id:122,leaf:true}]"; } response.getWriter().write(result); %> ---------- 运行结果只有前端的一个框架,没有树和节点,在FIRFOX上查看审查后提示[{name:'总公司',count:100,id:100}]语法错误,可是实在不知道哪错了,请大家给看盾,我是新手,可以说都不怎么懂,还请说得明白一点,
淘淘商城选择类目子节点不显示的问题(EASYUI异步树) 求大神指点!!!
这个是现在的样子: ![图片说明](https://img-ask.csdn.net/upload/201810/22/1540220574_69778.png) 正确的样子: ![图片说明](https://img-ask.csdn.net/upload/201810/22/1540220640_433459.png) DAO层 POJO ![图片说明](https://img-ask.csdn.net/upload/201810/22/1540220824_863010.png) Service ![图片说明](https://img-ask.csdn.net/upload/201810/22/1540220941_247864.png) controller ![图片说明](https://img-ask.csdn.net/upload/201810/22/1540220983_480770.png) JSP ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <link href="/js/kindeditor-4.1.10/themes/default/default.css" type="text/css" rel="stylesheet"> <script type="text/javascript" charset="utf-8" src="/js/kindeditor-4.1.10/kindeditor-all-min.js"></script> <script type="text/javascript" charset="utf-8" src="/js/kindeditor-4.1.10/lang/zh_CN.js"></script> <div style="padding:10px 10px 10px 10px"> <form id="itemAddForm" class="itemForm" method="post"> <table cellpadding="5"> <tr> <td>商品类目:</td> <td> <a href="javascript:void(0)" class="easyui-linkbutton selectItemCat">选择类目</a> <input type="hidden" name="cid" style="width: 280px;"></input> </td> </tr> <tr> <td>商品标题:</td> <td><input class="easyui-textbox" type="text" name="title" data-options="required:true" style="width: 280px;"></input></td> </tr> <tr> <td>商品卖点:</td> <td><input class="easyui-textbox" name="sellPoint" data-options="multiline:true,validType:'length[0,150]'" style="height:60px;width: 280px;"></input></td> </tr> <tr> <td>商品价格:</td> <td><input class="easyui-numberbox" type="text" name="priceView" data-options="min:1,max:99999999,precision:2,required:true" /> <input type="hidden" name="price"/> </td> </tr> <tr> <td>库存数量:</td> <td><input class="easyui-numberbox" type="text" name="num" data-options="min:1,max:99999999,precision:0,required:true" /></td> </tr> <tr> <td>条形码:</td> <td> <input class="easyui-textbox" type="text" name="barcode" data-options="validType:'length[1,30]'" /> </td> </tr> <tr> <td>商品图片:</td> <td> <a href="javascript:void(0)" class="easyui-linkbutton picFileUpload">上传图片</a> <input type="hidden" name="image"/> </td> </tr> <tr> <td>商品描述:</td> <td> <textarea style="width:800px;height:300px;visibility:hidden;" name="desc"></textarea> </td> </tr> <tr class="params hide"> <td>商品规格:</td> <td> </td> </tr> </table> <input type="hidden" name="itemParams"/> </form> <div style="padding:5px"> <a href="javascript:void(0)" class="easyui-linkbutton" onclick="submitForm()">提交</a> <a href="javascript:void(0)" class="easyui-linkbutton" onclick="clearForm()">重置</a> </div> </div> <script type="text/javascript"> var itemAddEditor ; //页面初始化完毕后执行此方法 $(function(){ //创建富文本编辑器 //itemAddEditor = TAOTAO.createEditor("#itemAddForm [name=desc]"); itemAddEditor = KindEditor.create("#itemAddForm [name=desc]", TT.kingEditorParams); //初始化类目选择和图片上传器 TAOTAO.init({fun:function(node){ //根据商品的分类id取商品 的规格模板,生成规格信息。第四天内容。 TAOTAO.changeItemParam(node, "itemAddForm"); }}); }); //提交表单 function submitForm(){ //有效性验证 if(!$('#itemAddForm').form('validate')){ $.messager.alert('提示','表单还未填写完成!'); return ; } //取商品价格,单位为“分” $("#itemAddForm [name=price]").val(eval($("#itemAddForm [name=priceView]").val()) * 100); //同步文本框中的商品描述 itemAddEditor.sync(); //取商品的规格 var paramJson = []; $("#itemAddForm .params li").each(function(i,e){ var trs = $(e).find("tr"); var group = trs.eq(0).text(); var ps = []; for(var i = 1;i<trs.length;i++){ var tr = trs.eq(i); ps.push({ "k" : $.trim(tr.find("td").eq(0).find("span").text()), "v" : $.trim(tr.find("input").val()) }); } paramJson.push({ "group" : group, "params": ps }); }); //把json对象转换成字符串 paramJson = JSON.stringify(paramJson); $("#itemAddForm [name=itemParams]").val(paramJson); //ajax的post方式提交表单 //$("#itemAddForm").serialize()将表单序列号为key-value形式的字符串 $.post("/item/save",$("#itemAddForm").serialize(), function(data){ if(data.status == 200){ $.messager.alert('提示','新增商品成功!'); } }); } function clearForm(){ $('#itemAddForm').form('reset'); itemAddEditor.html(''); } </script> ``` JS ``` Date.prototype.format = function(format){ var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(), //minute "s+" : this.getSeconds(), //second "q+" : Math.floor((this.getMonth()+3)/3), //quarter "S" : this.getMilliseconds() //millisecond }; if(/(y+)/.test(format)){ format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); } for(var k in o) { if(new RegExp("("+ k +")").test(format)){ format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length)); } } return format; }; var TT = TAOTAO = { // 编辑器参数 kingEditorParams : { //指定上传文件参数名称 filePostName : "uploadFile", //指定上传文件请求的url。 uploadJson : '/pic/upload', //上传类型,分别为image、flash、media、file dir : "image" }, // 格式化时间 formatDateTime : function(val,row){ var now = new Date(val); return now.format("yyyy-MM-dd hh:mm:ss"); }, // 格式化连接 formatUrl : function(val,row){ if(val){ return "<a href='"+val+"' target='_blank'>查看</a>"; } return ""; }, // 格式化价格 formatPrice : function(val,row){ return (val/1000).toFixed(2); }, // 格式化商品的状态 formatItemStatus : function formatStatus(val,row){ if (val == 1){ return '正常'; } else if(val == 2){ return '<span style="color:red;">下架</span>'; } else { return '未知'; } }, init : function(data){ // 初始化图片上传组件 this.initPicUpload(data); // 初始化选择类目组件 this.initItemCat(data); }, // 初始化图片上传组件 initPicUpload : function(data){ $(".picFileUpload").each(function(i,e){ var _ele = $(e); _ele.siblings("div.pics").remove(); _ele.after('\ <div class="pics">\ <ul></ul>\ </div>'); // 回显图片 if(data && data.pics){ var imgs = data.pics.split(","); for(var i in imgs){ if($.trim(imgs[i]).length > 0){ _ele.siblings(".pics").find("ul").append("<li><a href='"+imgs[i]+"' target='_blank'><img src='"+imgs[i]+"' width='80' height='50' /></a></li>"); } } } //给“上传图片按钮”绑定click事件 $(e).click(function(){ var form = $(this).parentsUntil("form").parent("form"); //打开图片上传窗口 KindEditor.editor(TT.kingEditorParams).loadPlugin('multiimage',function(){ var editor = this; editor.plugin.multiImageDialog({ clickFn : function(urlList) { var imgArray = []; KindEditor.each(urlList, function(i, data) { imgArray.push(data.url); form.find(".pics ul").append("<li><a href='"+data.url+"' target='_blank'><img src='"+data.url+"' width='80' height='50' /></a></li>"); }); form.find("[name=image]").val(imgArray.join(",")); editor.hideDialog(); } }); }); }); }); }, // 初始化选择类目组件 initItemCat : function(data){ $(".selectItemCat").each(function(i,e){ var _ele = $(e); if(data && data.cid){ _ele.after("<span style='margin-left:10px;'>"+data.cid+"</span>"); }else{ _ele.after("<span style='margin-left:10px;'></span>"); } _ele.unbind('click').click(function(){ $("<div>").css({padding:"5px"}).html("<ul>") .window({ width:'500', height:"450", modal:true, closed:true, iconCls:'icon-save', title:'选择类目', onOpen : function(){ var _win = this; $("ul",_win).tree({ url:'/item/cat/list', animate:true, method:"POST", onClick : function(node){ if($(this).tree("isLeaf",node.target)){ // 填写到cid中 _ele.parent().find("[name=cid]").val(node.id); _ele.next().text(node.text).attr("cid",node.id); $(_win).window('close'); if(data && data.fun){ data.fun.call(this,node); } } } }); }, onClose : function(){ $(this).window("destroy"); } }).window('open'); }); }); }, createEditor : function(select){ return KindEditor.create(select, TT.kingEditorParams); }, /** * 创建一个窗口,关闭窗口后销毁该窗口对象。<br/> * * 默认:<br/> * width : 80% <br/> * height : 80% <br/> * title : (空字符串) <br/> * * 参数:<br/> * width : <br/> * height : <br/> * title : <br/> * url : 必填参数 <br/> * onLoad : function 加载完窗口内容后执行<br/> * * */ createWindow : function(params){ $("<div>").css({padding:"5px"}).window({ width : params.width?params.width:"80%", height : params.height?params.height:"80%", modal:true, title : params.title?params.title:" ", href : params.url, onClose : function(){ $(this).window("destroy"); }, onLoad : function(){ if(params.onLoad){ params.onLoad.call(this); } } }).window("open"); }, closeCurrentWindow : function(){ $(".panel-tool-close").click(); }, changeItemParam : function(node,formId){ $.getJSON("/item/param/query/itemcatid/" + node.id,function(data){ if(data.status == 200 && data.data){ $("#"+formId+" .params").show(); var paramData = JSON.parse(data.data.paramData); var html = "<ul>"; for(var i in paramData){ var pd = paramData[i]; html+="<li><table>"; html+="<tr><td colspan=\"2\" class=\"group\">"+pd.group+"</td></tr>"; for(var j in pd.params){ var ps = pd.params[j]; html+="<tr><td class=\"param\"><span>"+ps+"</span>: </td><td><input autocomplete=\"off\" type=\"text\"/></td></tr>"; } html+="</li></table>"; } html+= "</ul>"; $("#"+formId+" .params td").eq(1).html(html); }else{ $("#"+formId+" .params").hide(); $("#"+formId+" .params td").eq(1).empty(); } }); }, getSelectionsIds : function (select){ var list = $(select); var sels = list.datagrid("getSelections"); var ids = []; for(var i in sels){ ids.push(sels[i].id); } ids = ids.join(","); return ids; }, /** * 初始化单图片上传组件 <br/> * 选择器为:.onePicUpload <br/> * 上传完成后会设置input内容以及在input后面追加<img> */ initOnePicUpload : function(){ $(".onePicUpload").click(function(){ var _self = $(this); KindEditor.editor(TT.kingEditorParams).loadPlugin('image', function() { this.plugin.imageDialog({ showRemote : false, clickFn : function(url, title, width, height, border, align) { var input = _self.siblings("input"); input.parent().find("img").remove(); input.val(url); input.after("<a href='"+url+"' target='_blank'><img src='"+url+"' width='80' height='50'/></a>"); this.hideDialog(); } }); }); }); } }; ``` 貌似是Controller里@RequestParam中的id一直没传进去 ,用的默认值0, 也不知道为什么会这样 ,请教一下应该怎么改。 谢谢!!
[能不能实现?] struts2 访问首页数据动态加载
思路是: 首页index.jsp,动态加载数据的action: loadIndex.action 在访问index.jsp时,执行loadIndex.action,由action得到数据库中数据后,[color=red][b]仍然将数据返回给index.jsp[/b][/color]由index.jsp显示数据. [b]问题补充:[/b] 谢谢3位的回答, lovewhzlq (CTO) 大大, 我尝试用ExtJs实现Ajax提交, [code="java"] Ext.onReady(function() { window.location.href = 'loadindex.action?id=xxxx; } );[/code] 却无法避免重复执行action的问题,变成死循环了. 有什么办法能让它只执行一次呢? 就像Ext.data.Store那样只load一次. [b]问题补充:[/b] 确实是, Ext里有无可以用来调用url的东东呢? [code="java"] Ext.Ajax.request({ url : 'loadindex.action?id=xxx }); [/code] ? [b]问题补充:[/b] 感谢 lovewhzlq (CTO) 大大, 我现在已经可以成功提交ajax请求去执行loadIndex.action了. [code="java"] Ext.onReady(function() { Ext.Ajax.request({ url : 'loadindex.action?id=LiteonIT' }); }); [/code] 可是发现执行完后返回的数据struts2标签无法识别? 我在firebug下可以看到数据库的返回数据. 但是用<s:itrator>之类的标签却得不到数据,页面空白. 是否跟Ext.Ajax.request返回的数据格式有关? [b]问题补充:[/b] [code="java"][/code]谢谢. index.jsp [code="xml"] <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Tools Shop</title> <link rel="stylesheet" type="text/css" href="css/style.css" /> <script type="text/javascript" src="js/boxOver.js"></script> <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="ext/ext-all.js"></script> <script type="text/javascript" src="ext-lang-zh_CN.js"></script> <script type="text/javascript" src="js/loadIndex.js"></script> </head> <body> <div id="main_container"> <div id="header"> <div class="top_right"> <div class="languages"> <div class="lang_text"> Languages: </div> <a href="#" class="lang"><img src="images/en.gif" alt="" title="" border="0" /> </a> <a href="#" class="lang"><img src="images/de.gif" alt="" title="" border="0" /> </a> </div> <div class="big_banner"> <a href="#"><img src="images/banner728.jpg" alt="" title="" border="0" /> </a> </div> </div> <!-- Company Logo here --> <div id="logo"> <s:iterator id="company" value="cpy"> <img src="images/<s:property value="logo"/>" /> </s:iterator> </div> </div> <div id="main_content"> <div id="menu_tab"> <ul class="menu"> <li> <a href="index.jsp" class="nav"> Home </a> </li> <li class="divider"></li> <li> <a href="#" class="nav">Products</a> </li> <li class="divider"></li> <li> <a href="#" class="nav">News</a> </li> <li class="divider"></li> <li> <a href="#" class="nav">My account</a> </li> <li class="divider"></li> <li> <a href="#" class="nav">Sign Up</a> </li> <li class="divider"></li> <li> <a href="contact.jsp" class="nav">Contact Us</a> </li> </ul> </div> <!-- end of menu tab --> <div class="crumb_navigation"> Navigation: <span class="current">Home</span> </div> <div class="left_content"> <div class="title_box"> Shotcut </div> <ul class="left_menu"> <!-- Company quick link here --> <li class="odd"> <!-- add tag # here --> <a href="index.jsp#cpypic">Company Picture</a> </li> <li class="even"> <a href="index.jsp#cpydesc">EnterPrise Introduce</a> </li> <!-- Company detail shotcut --> <s:iterator value="cpydetail" status="index"> <s:if test="#index.odd == true"> <li class="odd"> </s:if> <s:else> <li class="even"> </s:else> <a href="loadindex.action?id=LiteonIT#<s:property value=" id"/>"> <s:property value="name" /> </s:iterator> </ul> <div class="title_box"> Newsletter </div> <div class="border_box"> <input type="text" name="newsletter" class="newsletter_input" value="your email" /> <a href="#" class="join">subscribe</a> </div> </div> <!-- end of left content --> <div class="center_content"> <div class="oferta"> <div class="oferta_details"> <!-- Company Name,Picture and Description here --> <s:iterator value="cpy"> <div class="oferta_title"> Company Name </div> <div class="oferta_text_bold"> <s:property value="name" /> </div> <div class="oferta_title"> Company Picture <a name="cpypic"></a> </div> <div class="oferta_text"> <img src="images/<s:property value="picture"/>" width=540 height=250 /> </div> <div class="oferta_title"> Company Description <a name="cpydesc"></a> </div> <div class="oferta_text"> <s:property value="description" /> </div> </s:iterator> <!-- Company Detail here --> <s:iterator value="cpydetail"> <div class="oferta_title"> <s:property value="name" /> <a name="<s:property value="id" />"></a> </div> <div class="oferta_text"> <s:property value="value" /> </div> </s:iterator> </div> </div> </div> <!-- end of center content --> <div class="right_content"> <div class="title_box"> Search </div> <div class="border_box"> <input type="text" name="newsletter" class="newsletter_input" value="keyword" /> <a href="#" class="join">search</a> </div> <div class="title_box"> Friendly Link </div> <ul class="left_menu"> <s:iterator id="fl" value="friendlylink" status="index"> <s:if test="#index.odd == true"> <li class="odd"> </s:if> <s:else> <li class="even"> </s:else> <a href="http://<s:property value="fl"/>"> <s:property value="fl" /> </a> </li> </s:iterator> </ul> </div> <!-- end of right content --> </div> <!-- end of main content --> <div class="footer"> <div class="left_footer"> <img src="images/footer_logo.png" alt="" title="" width="89" height="42" /> </div> <div class="center_footer"> Template name. All Rights Reserved 2009 <br /> <img src="images/payment.gif" alt="" title="" /> </div> <div class="right_footer"> <a href="index.jsp">home</a> <a href="details.jsp">about</a> <a href="details.jsp">sitemap</a> <a href="details.jsp">rss</a> <a href="contact.jsp">contact us</a> </div> </div> <!-- end of footer --> </div> <!-- end of main_container --> </body> </html> [/code] loadIndex.js: [code="java"] Ext.onReady(function() { Ext.Ajax.request({ url : 'loadindex.action?id=LiteonIT' }); }); [/code] struts.xml: [code="java"] <action name="loadindex" class="companyInfoAction" method="loadCompanyInfo"> <result name="success">/index.jsp</result> </action> companyInfoAction: [code="java"][/code] public String loadCompanyInfo() { this.setCpy(ci.getCompanyInfo(this.getId())); this.setCpydetail(ci.getCompanyDetail(this.getId())); this.setFriendlylink(ci.getFriendlyLink(this.getId())); System.out.println("I am running"); return SUCCESS; } [/code] 访问index.jsp时可以看到System.out.println("I am running");执行了,firebug下也可以看到数据返回. [b]问题补充:[/b] index.jsp: [code="xml"] <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Tools Shop</title> <link rel="stylesheet" type="text/css" href="css/style.css" /> <script type="text/javascript" src="js/boxOver.js"></script> <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="ext/ext-all.js"></script> <script type="text/javascript" src="ext-lang-zh_CN.js"></script> <script type="text/javascript" src="js/loadIndex.js"></script> </head> <body> <div id="main_container"> <div id="header"> <div class="top_right"> <div class="languages"> <div class="lang_text"> Languages: </div> <a href="#" class="lang"><img src="images/en.gif" alt="" title="" border="0" /> </a> <a href="#" class="lang"><img src="images/de.gif" alt="" title="" border="0" /> </a> </div> <div class="big_banner"> <a href="#"><img src="images/banner728.jpg" alt="" title="" border="0" /> </a> </div> </div> <!-- Company Logo here --> <div id="logo"> <s:iterator id="company" value="cpy"> <img src="images/<s:property value="logo"/>" /> </s:iterator> </div> </div> <div id="main_content"> <div id="menu_tab"> <ul class="menu"> <li> <a href="index.jsp" class="nav"> Home </a> </li> <li class="divider"></li> <li> <a href="#" class="nav">Products</a> </li> <li class="divider"></li> <li> <a href="#" class="nav">News</a> </li> <li class="divider"></li> <li> <a href="#" class="nav">My account</a> </li> <li class="divider"></li> <li> <a href="#" class="nav">Sign Up</a> </li> <li class="divider"></li> <li> <a href="contact.jsp" class="nav">Contact Us</a> </li> </ul> </div> <!-- end of menu tab --> <div class="crumb_navigation"> Navigation: <span class="current">Home</span> </div> <div class="left_content"> <div class="title_box"> Shotcut </div> <ul class="left_menu"> <!-- Company quick link here --> <li class="odd"> <!-- add tag # here --> <a href="index.jsp#cpypic">Company Picture</a> </li> <li class="even"> <a href="index.jsp#cpydesc">EnterPrise Introduce</a> </li> <!-- Company detail shotcut --> <s:iterator value="cpydetail" status="index"> <s:if test="#index.odd == true"> <li class="odd"> </s:if> <s:else> <li class="even"> </s:else> <a href="loadindex.action?id=LiteonIT#<s:property value=" id"/>"> <s:property value="name" /> </s:iterator> </ul> <div class="title_box"> Newsletter </div> <div class="border_box"> <input type="text" name="newsletter" class="newsletter_input" value="your email" /> <a href="#" class="join">subscribe</a> </div> </div> <!-- end of left content --> <div class="center_content"> <div class="oferta"> <div class="oferta_details"> <!-- Company Name,Picture and Description here --> <s:iterator value="cpy"> <div class="oferta_title"> Company Name </div> <div class="oferta_text_bold"> <s:property value="name" /> </div> <div class="oferta_title"> Company Picture <a name="cpypic"></a> </div> <div class="oferta_text"> <img src="images/<s:property value="picture"/>" width=540 height=250 /> </div> <div class="oferta_title"> Company Description <a name="cpydesc"></a> </div> <div class="oferta_text"> <s:property value="description" /> </div> </s:iterator> <!-- Company Detail here --> <s:iterator value="cpydetail"> <div class="oferta_title"> <s:property value="name" /> <a name="<s:property value="id" />"></a> </div> <div class="oferta_text"> <s:property value="value" /> </div> </s:iterator> </div> </div> </div> <!-- end of center content --> <div class="right_content"> <div class="title_box"> Search </div> <div class="border_box"> <input type="text" name="newsletter" class="newsletter_input" value="keyword" /> <a href="#" class="join">search</a> </div> <div class="title_box"> Friendly Link </div> <ul class="left_menu"> <s:iterator id="fl" value="friendlylink" status="index"> <s:if test="#index.odd == true"> <li class="odd"> </s:if> <s:else> <li class="even"> </s:else> <a href="http://<s:property value="fl"/>"> <s:property value="fl" /> </a> </li> </s:iterator> </ul> </div> <!-- end of right content --> </div> <!-- end of main content --> <div class="footer"> <div class="left_footer"> <img src="images/footer_logo.png" alt="" title="" width="89" height="42" /> </div> <div class="center_footer"> Template name. All Rights Reserved 2009 <br /> <img src="images/payment.gif" alt="" title="" /> </div> <div class="right_footer"> <a href="index.jsp">home</a> <a href="details.jsp">about</a> <a href="details.jsp">sitemap</a> <a href="details.jsp">rss</a> <a href="contact.jsp">contact us</a> </div> </div> <!-- end of footer --> </div> <!-- end of main_container --> </body> </html> [/code] [b]问题补充:[/b] index.jsp中 第150行开始用struts2标签获取数据库数据. [b]问题补充:[/b] loadIndex.js的内容如下 window.location.href = 'loadindex.action?id=xxxx'; 这里是不是应该用ajax 请求啊,直接window.location.href 的话会重复执行,进入死循环. <script type="text/javascript" src="js/loadIndex.js"></script> 放在 <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="ext/ext-all.js"></script> <script type="text/javascript" src="ext-lang-zh_CN.js"></script> 之前的话, ExtJs识别不了吧? [b]问题补充:[/b] 再次感谢lovewhzlq (CTO)大大的热心回复. 其实我现在就是用2个页面做的,一个configIndex.jsp,一个index.jsp.在configIndex中提交action,转到index.jsp. 之所以搞得这么麻烦,主要是为了避免用户直接通过地址栏访问index.jsp的时候出不来数据的问题. 现在问题其实已经解决了一大半拉.用ajax提交action后可以看到执行了一次,数据库数据返回也有,反而是struts2标签失效了,很纳闷. [b]问题补充:[/b] 其实web程序对用户直接用地址访问页面的做法都比较难处理.不知道是否有好的方式避免掉这种问题. [b]问题补充:[/b] 感谢energykey兄的回答,鄙视 得好. 也就是说, ajax请求的返回,只能用response.responseText或者json来获取, struts2标签是不行的了.它们是2条路的人. 因为ajax是异步的请求, struts2走的路是A的话,ajax的请求走的是B?
dhtmlXTree树问题
<script> tree = new dhtmlXTreeObject("treeboxbox_tree2", "100%", "100%", 0); tree.setImagePath("../../codebase/imgs/csh_bluebooks/"); tree.setEscapingMode("utf-8"); tree.enableCheckBoxes(1); tree.enableThreeStateCheckboxes(true); tree.loadXML("/PluginWeb/erp/loadXML/loadXML.action"); </script> 原先的树差不多是像这样加载的,通过action生成一个xml,然后用loadxml方法。 现在的情况是这样的。 我在jsp页面加入了几个单选框。通过单选框的click事件,显示不同的树。 比如,我点一下单选框1传入一个id=1,页面上的div里就异步的显示1号树。 我点单选框2就,显示2号树。 <script> function changeTree(){ tree = new dhtmlXTreeObject("treeboxbox_tree2", "100%", "100%", 0); tree.setImagePath("../../codebase/imgs/csh_bluebooks/"); tree.setEscapingMode("utf-8"); tree.enableCheckBoxes(1); tree.enableThreeStateCheckboxes(true); tree.loadXML("/PluginWeb/erp/loadXML/loadXML.action?id="id); } </script> 这样写达不到,异步换树的效果,希望朋友们可以指点我一下
Scrapy爬取下来的数据不全,为什么总会有遗漏?
本人小白一枚,刚接触Scrapy框架没多久,写了一个简单的Spider,但是发现每一次爬取后的结果都比网页上的真实数据量要少,比如网站上一共有100条,但我爬下来的结果一般会少几条至几十条不等,很少有100条齐的时候。 整个爬虫有两部分,一部分是页面的横向爬取(进入下一页),另一个是纵向的爬取(进入页面中每一产品的详细页面)。之前我一直以为是pipelines存储到excel的时候数据丢失了,后来经过Debug调试,发现是在Spider中,数据就遗漏了,def parse函数中的item数量是齐的,包括yield Request加入到队列中,但是调用def parse_item函数时,就有些产品的详细页面无法进入。这是什么原因呢,是因为Scrapy异步加载受网速之类的影响么,本身就有缺陷,还是说是我设计上面的问题?有什么解决的方法么,不然数据量一大那丢失的不是就很严重么。 求帮助,谢谢各位了。 ``` class MyFirstSpider(Spider): name = "MyFirstSpider" allowed_doamins = ["e-shenhua.com"] start_urls = ["https://www.e-shenhua.com/ec/auction/oilAuctionList.jsp?_DARGS=/ec/auction/oilAuctionList.jsp"] url = 'https://www.e-shenhua.com/ec/auction/oilAuctionList.jsp' def parse(self, response): items = [] selector = Selector(response) contents = selector.xpath('//table[@class="table expandable table-striped"]/tbody/tr') urldomain = 'https://www.e-shenhua.com' for content in contents: item = CyfirstItem() productId = content.xpath('td/a/text()').extract()[0].strip() productUrl = content.xpath('td/a/@href').extract()[0] totalUrl = urldomain + productUrl productName = content.xpath('td/a/text()').extract()[1].strip() deliveryArea = content.xpath('td/text()').extract()[-5].strip() saleUnit = content.xpath('td/text()').extract()[-4] item['productId'] = productId item['totalUrl'] = totalUrl item['productName'] = productName item['deliveryArea'] = deliveryArea item['saleUnit'] = saleUnit items.append(item) print(len(items)) # **************进入每个产品的子网页 for item in items: yield Request(item['totalUrl'],meta={'item':item},callback=self.parse_item) # print(item['productId']) # 下一页的跳转 nowpage = selector.xpath('//div[@class="pagination pagination-small"]/ul/li[@class="active"]/a/text()').extract()[0] nextpage = int(nowpage) + 1 str_nextpage = str(nextpage) nextLink = selector.xpath('//div[@class="pagination pagination-small"]/ul/li[last()]/a/@onclick').extract() if (len(nextLink)): yield scrapy.FormRequest.from_response(response, formdata={ *************** }, callback = self.parse ) # 产品子网页内容的抓取 def parse_item(self,response): sel = Selector(response) item = response.meta['item'] # print(item['productId']) productInfo = sel.xpath('//div[@id="content-products-info"]/table/tbody/tr') titalBidQty = ''.join(productInfo.xpath('td[3]/text()').extract()).strip() titalBidUnit = ''.join(productInfo.xpath('td[3]/span/text()').extract()) titalBid = titalBidQty + " " +titalBidUnit minBuyQty = ''.join(productInfo.xpath('td[4]/text()').extract()).strip() minBuyUnit = ''.join(productInfo.xpath('td[4]/span/text()').extract()) minBuy = minBuyQty + " " + minBuyUnit isminVarUnit = ''.join(sel.xpath('//div[@id="content-products-info"]/table/thead/tr/th[5]/text()').extract()) if(isminVarUnit == '最小变量单位'): minVarUnitsl = ''.join(productInfo.xpath('td[5]/text()').extract()).strip() minVarUnitdw = ''.join(productInfo.xpath('td[5]/span/text()').extract()) minVarUnit = minVarUnitsl + " " + minVarUnitdw startPrice = ''.join(productInfo.xpath('td[6]/text()').extract()).strip().rstrip('/') minAddUnit = ''.join(productInfo.xpath('td[7]/text()').extract()).strip() else: minVarUnit = '' startPrice = ''.join(productInfo.xpath('td[5]/text()').extract()).strip().rstrip('/') minAddUnit = ''.join(productInfo.xpath('td[6]/text()').extract()).strip() item['titalBid'] = titalBid item['minBuyQty'] = minBuy item['minVarUnit'] = minVarUnit item['startPrice'] = startPrice item['minAddUnit'] = minAddUnit # print(item) return item ```
手机测试 wx.config 无反应,愿意发微信红包, 求大佬帮忙分析解决
我在微信开发工具测试, wx.config 显示ok , wx.chooseWXPay.没有此SDK或暂不支持此SDK模拟 **问题出在, 我用手机测试 (ios,android) wx.config无反应,** erro和ready均不进入 wx.chooseWXPay也无法用, 我在https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 验证了签名是一毛一样的, 求教大佬, 我这代码是出了啥毛病 ``` <!doctype html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html lang="zh-cn"> <head> <%@include file="/pc/inc/commoncontent.inc"%> <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script src="<%=contextPath%>/m/smartHotel/script/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> </script> <title>订单-支付</title> <span class="disb picNum padTB30"><i class="disib iconPic" onClick="openPic(this);" >3532rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr张</i></span> </head> <body> <script type="text/javascript"> var appId1,timeStamp1,nonceStr1,packageStr1,signType1,paySign1; $(document).ready(function () { $.ajax({ url : contextPath+ "/weixin/hotelorder/wxPay.action", type:"post", dataType:'json', //接受数据格式 async: false, data:{url:window.location.href.split('#')[0].replace(/\&/g,"%26")},//传参,建议使用json //1:手机号, 2:房间数.3单价4总价 5: 当前bedid 6 :入住人 姓名 7 发票8 入住日离开日 error:function(data){//请求失败时处理 // alert(data); window.location.href = '<%=contextPath%>/m/smartHotel/html/yysb.html'/*预订失败页*/ }, success:function(data) { if( data) { appId1 = data.pay.appId; timeStamp1 = data.pay.timeStamp; nonceStr1 = data.pay.nonceStr; packageStr1 = data.pay.package; signType1 = data.pay.signType; paySign1 = data.pay.paySign; } wx.config({ debug:false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:data.pay.appId, // 必填,公众号的唯一标识 timestamp:data.config.timestamp, // 必填,生成签名的时间戳 nonceStr:data.config.noncestr, // 必填,生成签名的随机串 signature:data.config.configSign, // 必填,签名,见附录1 jsApiList:['chooseWXPay','closeWindow'] }); wx.error(function(res){ alert("error enter"); }); wx.ready(function(){ alert("ready enter"); pay(); }); //onBridgeReady(); // alert("success inter"); } }); }); function pay() { // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 console.log(appId1 +" / "+ timeStamp1+" / " + nonceStr1+" / "+packageStr1 +" / "+ signType1+" / "+paySign1); wx.chooseWXPay({ timestamp:timeStamp1, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 nonceStr:nonceStr1, // 支付签名随机串,不长于 32 位 package:packageStr1, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***) signType:signType1, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' paySign:paySign1, // 支付签名 success:function(res) { alert("8888888888888"); alert(res); alert(res.errMsg); console.log(res.errMsg); // 支付成功后的回调函数 if (res.errMsg == "chooseWXPay:ok") { //支付成功 alert('支付成功'); } else { alert(res.errMsg); } } }); } function onBridgeReady(){ alert("进入了onbridgeready"); WeixinJSBridge.log("889"); WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "appId":appId1, //公众号名称,由商户传入 "timeStamp":timeStamp1, //时间戳,自1970年以来的秒数 "nonceStr":nonceStr1, //随机串 "package":packageStr1, "signType":"MD5", //微信签名方式: "paySign":paySign1 //微信签名 }, function(res){ WeixinJSBridge.log(res); alert("进入了success"); alert(res.errorMsg); // 使用以下方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。 if(res.errMsg == "get_brand_wcpay_request:ok") { alert("支付成功"); // window.location.href = "${pageContext.request.contextPath}/wx/success?orderId=${orderId}"; }else if(res.errMsg == "get_brand_wcpay_request:fail"){ alert('支付失败'); }else if(res.errMsg == "get_brand_wcpay_request:cancel"){ alert('支付取消'); }else{ alert(res.errMsg); } } ); } function openPic() { pay(); //wx.closeWindow(); } //调用模拟 回调 // $.ajax({ // url : contextPath+ "/weixin/hotelorder/moniWXPay.action", // type:"post", // dataType:'json', //接受数据格式 // async: false, // data:{parm1:getQueryString2("orderId")},//传参,建议使用json // error:function(data){//请求失败时处理 // alert(data); // }, // success:function(data) // { // if(data.result =="success") // { // window.location.href = '<%=contextPath%>/m/smartHotel/html/yycg.jsp?orderId='+getQueryString2("orderId"); // } // // } // }); function getQueryString2(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if(r != null) return decodeURI(r[2]); return null; } </script> </body> </html> ```
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
阿里面试官问我:如何设计秒杀系统?我的回答让他比起大拇指
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图和个人联系方式,欢迎Star和指教 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了...
五年程序员记流水账式的自白。
不知觉已中码龄已突破五年,一路走来从起初铁憨憨到现在的十九线程序员,一路成长,虽然不能成为高工,但是也能挡下一面,从15年很火的android开始入坑,走过java、.Net、QT,目前仍处于android和.net交替开发中。 毕业到现在一共就职过两家公司,目前是第二家,公司算是半个创业公司,所以基本上都会身兼多职。比如不光要写代码,还要写软著、软著评测、线上线下客户对接需求收集...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n...
一文详尽系列之模型评估指标
点击上方“Datawhale”,选择“星标”公众号第一时间获取价值内容在机器学习领域通常会根据实际的业务场景拟定相应的不同的业务指标,针对不同机器学习问题如回归、分类、排...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
压测学习总结(1)——高并发性能指标:QPS、TPS、RT、吞吐量详解
一、QPS,每秒查询 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。 二、TPS,每秒事务 TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
程序员该看的几部电影
1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?如何...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
还记得那个提速8倍的IDEA插件吗?VS Code版本也发布啦!!
去年,阿里云发布了本地 IDE 插件 Cloud Toolkit,仅 IntelliJ IDEA 一个平台,就有 15 万以上的开发者进行了下载,体验了一键部署带来的开发便利。时隔一年的今天,阿里云正式发布了 Visual Studio Code 版本,全面覆盖前端开发者,帮助前端实现一键打包部署,让开发提速 8 倍。 VSCode 版本的插件,目前能做到什么? 安装插件之后,开发者可以立即体验...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
2019年除夕夜的有感而发
天气:小雨(加小雪) 温度:3摄氏度 空气:严重污染(399) 风向:北风 风力:微风 现在是除夕夜晚上十点钟,再有两个小时就要新的一年了; 首先要说的是我没患病,至少现在是没有患病;但是心情确像患了病一样沉重; 现在这个时刻应该大部分家庭都在看春晚吧,或许一家人团团圆圆的坐在一起,或许因为某些特殊原因而不能团圆;但不管是身在何处,身处什么境地,我都想对每一个人说一句:新年快乐! 不知道csdn这...
听说想当黑客的都玩过这个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的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了掌握好Android打下基础。
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
【CSDN学院出品】 你不可不知的JS面试题(分期更新……)
1、JS中有哪些内置类型? 7种。分别是boolean、number、string、object、undefined、null、symbol。 2、NaN是独立的一种类型吗? 不是。NaN是number类型。 3、如何判断是哪个类型? Object.prototype.toString.call(),返回为[object Type]。 现在我们来验证一下。 Object.prototype.toS...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
HTML5适合的情人节礼物有纪念日期功能
前言 利用HTML5,css,js实现爱心树 以及 纪念日期的功能 网页有播放音乐功能 以及打字倾诉感情的画面,非常适合情人节送给女朋友 具体的HTML代码 具体只要修改代码里面的男某某和女某某 文字段也可自行修改,还有代码下半部分的JS代码需要修改一下起始日期 注意月份为0~11月 也就是月份需要减一。 当然只有一部分HTML和JS代码不够运行的,文章最下面还附加了完整代码的下载地址 &lt;!...
相关热词 c#开发的dll注册 c#的反射 c# grid绑定数据源 c#多线程怎么循环 c# 鼠标左键 c# char占位符 c# 日期比较 c#16进制转换为int c#用递归求顺序表中最大 c#小型erp源代码
立即提问