ajax成功后刷新页面失败怎么解决

我的html中有一个iframe,iframe中需要ajax提交数据,想要成功后刷新iframe的页面
可是location.reload()执行后没有用该怎么办?我确定ajax已经成功了,因为除了刷新页面的代码其他代码都正常执行了,控制台也没有错误报告。请问大神如何解决

5个回答

network 里面看你的请求,请求成功的话,能找到你的请求的完整内容,和返回值..
话说测试的时候,ajax 成功和失败的而方法都应该输出一点什么,方便调试.

weixin_44984924
weixin_44984924 我做的是app也有这个问题
4 个月之前 回复
weixin_44984924
weixin_44984924 大萨达
4 个月之前 回复
qq_29594393
当作看不见 回复qq_33697757: 能正常alert输出返回的数据吗? 能输出的话,那就是处理数据的时候有问题,
接近 3 年之前 回复
qq_33697757
qq_33697757 回复当作看不见: 就只有这两句代码
接近 3 年之前 回复
qq_33697757
qq_33697757 回复qq_33697757: alert(JSON.stringifg(data));location.reload();
接近 3 年之前 回复
qq_33697757
qq_33697757 回复当作看不见: success:function(date){}
接近 3 年之前 回复
qq_29594393
当作看不见 回复qq_33697757: 那就看你的回调函数执行有没有问题了,贴一下关键代码吧
接近 3 年之前 回复
qq_33697757
qq_33697757 是成功了的location.reload也执行了只是没有用处
接近 3 年之前 回复

试试 document.frames('iframe的name').location.reload();

freeSun90
freeSun90 你是想只刷新iframe 还是想刷新整个页面(location.replace(location.href);)?
接近 3 年之前 回复

回调成功了,没有返回到页面,说明你没有写@ResponseBody 注解

如果你回调成功了,就可以在后台打断点,测试一下,看一下值有没有传过去,如果传过去了,看一下走到哪一步报错,这样可以确定是页面还是后台的问题,然后具体问题具体分析

按说应该是应该是可以的,但是我看不到你页面的代码没办法全面分析了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ajax怎么才能不让页面刷新
``` window.onload=function(){ var select=$("#sele"); var input=$(".span2") var submit=$(".btn"); submit.click(function(){ if(select.val()=="department"){ input.attr("name", "interact.teDepartment"); }else{ input.attr("name", "interact.teacherName"); } $.ajax({ cache:true, type:"post", data:$("#queryForm").serialize(), url:"${pageContext.request.contextPath}/log/studentInteract" error:function(){alert("查询失败!");}, success:function(){ } }); }); } <select class="span3" name="interact.flagAnswer" id="sele" style="width: 150px; margin-left: 10px; border-radius:4px;" > <option value="N" selected="selected">未回复</option> <option value="Y">已回复</option> </select> ``` 我想让这个下拉列表的内容在发送ajax前后一样,
java ajax没有刷新成制定界面而是跳出一个代码窗口
``` <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- 定义Filter --> <filter> <!-- 指定Filter的名字,不能为空 --> <filter-name>struts2</filter-name> <!-- 指定Filter的实现类,此处使用的是Struts2提供的拦截器类 --> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <!-- 定义Filter所拦截的URL地址 --> <filter-mapping> <!-- Filter的名字,该名字必须是filter元素中已声明过的过滤器名字 --> <filter-name>struts2</filter-name> <!-- 定义Filter负责拦截的URL地址 --> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 欢迎页面 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> ``` ``` package com.action; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport{ private static final long serialVersionUID = 1L; //name 属性 private String name; //password 属性 private String password; //name属性 getter方法 public String getName() { return name; } //name属性setter方法 public void setName(String name) { this.name = name; } //password属性getter方法 public String getPassword() { return password; } //password属性setter方法 public void setPassword(String password) { this.password = password; } //重载execute()方法 public String execute() throws Exception { //httpservletresponse 类型变量 HttpServletResponse response=ServletActionContext.getResponse(); //设置返回内容类型 response.setContentType("text/xml;charset=UTF-8"); //设置头 response.setHeader("Cache-Control", "no-cache"); //输出success response.getWriter().println("success"); //检查name password属性 if(name.equals("tom")&&password.equals("123")) { response.getWriter().println("welcome login!"); }else { response.getWriter().println("error,please input again!"); } //返回success return SUCCESS; } } ``` ``` <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 包package struts2_ajax_demo --> <package name="Struts2_AJAX_DEMO" namespace="/" extends="struts-default"> <!-- login action --> <action name="login" class="com.action.LoginAction"> <!-- result 返回success。jsp --> <result>/success.jsp</result> </action> </package> </struts> ``` ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib prefix="sx" uri="/struts-dojo-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <sx:head/> <script type="text/javascript"> /*定义xmlhttprequest变量*/ var XHR= false; function CreateXHR(){ try{ /*检查能否用activexobject*/ XHR = new ActiveXObject("msxml2.XMLHTTP"); }catch(e1){ try{ /*检查能否用activexobject*/ XHR = new ActiveXObject("microsoft.XMLHTTP"); }catch(e2){ try{ /*检查能否用本地javascript对象*/ XHR = new XMLHttpRequest(); }catch(e3){ //创建失败 XHR = false; } } } } function sendRequest(){ //创建xmlhttprequest对象 CreateXHR(); if(XHR){ //创建成功 //得到name的值 var name=document.getElementById("name").value; //得到password的值 var password=document.getElementById("password").value; //要访问的uri var uri="http://localhost:8080/AjaxDemo/login.action?name="+name+"&password="+password; //var uri="http://localhost:8080/AjaxDemo/login.action?name=1&password=1"; //访问open XHR.open("GET",uri,true); //设置事件触发器 XHR.onreadystatechange = resultHander; //发送请求 XHR.send(null); } } function resultHander(){ //检查状态 if (XHR.readyState == 4 && XHR.status == 200){ //显示提示框 alert(XHR.responseText); } } </script> </head> <body> <center> Name: <input type="text" id="name" /><br /> password: <input type="password" id="password" /><br /> <!-- 单击触发ajax --> <input type="button" value="ok" onclick="sendRequest();" /> </center> </body> </html> ``` ``` package com.action; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Login extends HttpServlet{ /** * */ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doGet(req, resp); } } ``` ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <center> <h2> success </h2> </center> </body> </html> ``` 截图 ![图片说明](https://img-ask.csdn.net/upload/201705/09/1494296228_856933.png)
使用ajax+servlet完成登录验证问题
使用ajax登录时,成功就直接跳转到index页面,失败则显示错误信息。 servlet中使用了sendRedicretion,这样的话登录验证成功,但是没有刷新页面,这个改怎么办。 还有登录是做在弹出的div中的,如果登录失败的话要在div中显示信息,我这个点击登陆后登录框直接就消失了,请问该怎么做
AJAX异步请求,数据库数据更新但是局部不刷新
``` 数据库内容更新了,手动刷新页面数据也显示,只是单击保存按钮后,数据不在页面上显示,应该是点击保存按钮后在图中红色位置刷新出一条数据的,求大佬解惑 //代码如下: $.ajax({ url:'workbench/activity/createMarketActivityRemark.do', data:{ noteContent:noteContent, activitiesId:activitiesId }, type:'post', success:function(data){ if(data.success){ //清空输入框 $("#remark").val(''); //更新备注列表 var htmlStr=""; htmlStr+="<div id='del_div_"+data.mar.id+"' class='remarkDiv' style='height: 60px;'>"; htmlStr+="<img title='${user.name}' src='image/user-thumbnail.png' style='width: 30px; height:30px;'>"; htmlStr+="<div style='position: relative; top: -40px; left: 40px;' >"; htmlStr+="<h5>"+data.mar.noteContent+"</h5>"; htmlStr+="<font color='gray'>市场活动</font> <font color='gray'>-</font> <b>${ma.name }</b> <small style='color: gray;'> "+data.mar.noteTime+" 由${user.name}创建</small>"; htmlStr+="<div style='position: relative; left: 500px; top: -30px; height: 30px; width: 100px; display: none;'>"; htmlStr+="<a remark-id='"+data.mar.id+"' name='editA' class='myHref' href='javascript:void(0);'><span class='glyphicon glyphicon-edit' style='font-size: 20px; color: #E6E6E6;'></span></a>"; htmlStr+="&nbsp;&nbsp;&nbsp;&nbsp;"; htmlStr+="<a remark-id='"+data.mar.id+"' name='removeA' class='myHref' href='javascript:void(0);'><span class='glyphicon glyphicon-remove' style='font-size: 20px; color: #E6E6E6;'></span></a>"; htmlStr+="</div>"; htmlStr+="</div>"; htmlStr+="</div>"; $("#remarkDiv").before(htmlStr); }else{ alert("保存失败"); } } }); }); ```
ssh项目页面url包含Action名时ajax上传文件返回错误500
本人正在做一个网站,暂时做到能够正常登录和注销,现在希望在已登录页面加一个文件上传功能。 目前该功能代码已经完成,在一般的jsp和html页面内都能正常使用,在该网站项目内虽然也能正常使用,但是在执行success后会跳出java.lang.nullpointerexception,无法回到原页面上。现已经确认后台代码没有问题,问题发生在action的return后。代码如下,这一方面的一些原理我的确还不是很懂,还请各位指点一二,谢谢。 1.jsp、html以及网站内jsp都是使用的这一段代码,前两者可用项目内的不可用 ``` <form id="myForm"> 选择Excel:<input type="file" name="input"> <button onclick="btn()">上传</button> </form> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script type="text/javascript"> function btn(){ var formData = new FormData($("#myForm")[0]); $.ajax({ type : "post", url : "/Web_project/Fill/upload", data : formData, async: false, cache: false, contentType: false, processData: false, error: function (result) { alert('异常'); }, success: function (result) { if(result.error == ""){ alert("已上传"); }else{ alert("失败") } } }); } </script> ``` 2.upload.action对应的result ``` @Result(name="uploaded",type="json",params={"root","mm"}) ``` 3.jsp页面下的url和项目action跳转后的url,这是我发现的两者唯一区别,不知道是不是能证明什么问题 ![图片说明](https://img-ask.csdn.net/upload/201903/06/1551811215_326338.jpg) ![图片说明](https://img-ask.csdn.net/upload/201903/06/1551811226_117785.jpg) ******************** ************************************ 虽然不是很清楚原因,但是我个人认为是ajax提交了页面后,页面刷新,触发了登录用的action,再次检验用户登录,但是却没有取到数据,所以空指针。(个人猜测,没有详细了解) 我给action这段代码加了一个判断session是否为空,不为空则直接返回的代码段,这么一来在ajax提交页面后,action内验证登录的部分代码不会再次运行,页面也确实没有出现错误而是正常停留在原页面。 虽然没有能直接解决我的问题,但是很感谢各位的建议和帮助。
jquery怎么实现不刷新页面就更新下拉列表?
![图片说明](https://img-ask.csdn.net/upload/201907/22/1563777265_185700.png) ![图片说明](https://img-ask.csdn.net/upload/201907/22/1563777367_428849.png) 每次添加教学区后,教室管理教学区下拉列表并未更新最新添加的教学区,需要重新刷新整个页面方能出现。 现在想添加后不刷新直接实时在下拉列表中更新 ``` //添加一个教学区 function addArea() { var areaName = $("#operator_areaName").val(); if (areaName == '') { layer.msg("教学区名称不能为空", { time : 1500, icon : 2 }); return; } else { // 发送请求 var url = "/school/schoolArea/add"; var data = { "areaName" : areaName }; $.post(url, data, function(result) { if (result.resCode == "0") { layer.alert('添加教学区成功', { icon : 1 }); $('#area-table').bootstrapTable('refreshOptions',{pageNumber:1}); $("#areaModal").modal('hide'); //清除相应缓存,保证操作后数据是最新的 operatorAreaDealCache(); } else { layer.alert('操作失败,原因:' + result.resMsg, { icon : 2 }); } // $("#search_classroom_areaSelector").load(url,data); }); $("#search_classroom_areaSelector").attr("selected","selected"); } } ``` ``` //点击教室管理tab页 function loadClassrooms() { if(selectClassroomList.length != 0) { selectClassroomList = []; $("#classroom-table").bootstrapTable('removeAll'); $("#classroom-table").bootstrapTable("refresh"); } else { getClassroomList(); } } ``` ``` //填充教学区下拉列表 function getAllAreaSelector() { if (isFristGetAllAreaSelector) { $("#operator_schoolAreaSelector").selectpicker({ noneSelectedText: '请选择',//默认显示内容 size: 5 }); //数据赋值 //var select = $("#schoolAreaSelector"); var html = ""; var url = "/school/schoolArea/list"; var data = {"rows": -1}; $.post(url, data, function (result) { if (result.resCode == "0") { var areaList = result.rows; for (var i = 0; i < areaList.length; i++) { html += "<option value='" + areaList[i].areaId + "'>" + areaList[i].areaName + "</option>"; } $("#operator_schoolAreaSelector").append(html); $('#operator_schoolAreaSelector').selectpicker('refresh'); //初始化刷新数据 isFristGetAllAreaSelector = false; } }); } } ``` ``` //添加一个教学区 function addArea() { var areaName = $("#operator_areaName").val(); if (areaName == '') { layer.msg("教学区名称不能为空", { time : 1500, icon : 2 }); return; } else { // 发送请求 var url = "/school/schoolArea/add"; var data = { "areaName" : areaName }; $.post(url, data, function(result) { if (result.resCode == "0") { layer.alert('添加教学区成功', { icon : 1 }); $('#area-table').bootstrapTable('refreshOptions',{pageNumber:1}); $("#areaModal").modal('hide'); //清除相应缓存,保证操作后数据是最新的 operatorAreaDealCache(); } else { layer.alert('操作失败,原因:' + result.resMsg, { icon : 2 }); } // $("#search_classroom_areaSelector").load(url,data); }); $("#search_classroom_areaSelector").attr("selected","selected"); } } ```
SpringMVC页面Ajax传JSON到controller,返回包含多个对象的JSON
做的一个练习,筛选,页面随意勾选多个复选框,局部刷新返回显示与复选框value值匹配的对象数据,传JSON到controller,返回包含多个对象的JSON。controller怎么写?返回JSON后页面怎么处理 $.ajax({ url:"user/screening", type:"post", //请求方式 data:"{\"pwd1\":\""+pwd1+"\",\"pwd2\":\""+pwd2+"\",\"email1\":\""+email1+"\",\"email2\":\""+email2+"\"}",//要发送的数据 dataType:"", //服务器返回的数据类型 //data返回的数据,strStatus状态码(200响应正确),xhr:XMLHttpRequest对象 success:function(data,strStatus,xhr){ //请求成功返回数据后执行的代码 eval("var mydata="+data); //eval()将字符串当成JS脚本执行 $.each(mydata,function(i,item){ //i:遍历的下标,item:遍历出的单个对象 $("#show").html(item.id+item.username+item.password+item.email); }); }, error:function(xhr,strStatus,strError){ //请求失败后执行的代码 alert(strError); } }); public UserController(){ userMap.put("1", new User("1","yiyiyi","123456","yiyiyi@qq.com")); userMap.put("2", new User("2","ererer","123456","ererer@qq.com")); userMap.put("3", new User("3","sansansan","123456","sansansan@qq.com")); userMap.put("4", new User("4","yiyiyi","654321","yiyiyi@qq.com")); userMap.put("5", new User("5","ererer","654321","ererer@qq.com")); userMap.put("6", new User("6","sansansan","654321","sansansan@qq.com")); } @RequestMapping(value="screening",method=RequestMethod.POST) @ResponseBody public Object screening(@RequestBody Object object){ JSONObject jo = JSONObject.fromObject(toString()); List<Object> objects = new ArrayList<Object>(); Screening scr = (Screening)JSONObject.toBean(jo, Screening.class); Iterator<Map.Entry<String, User>> iter = userMap.entrySet().iterator(); while(iter.hasNext()){ Map.Entry<String, User> entry = iter.next(); if(scr.getPwd1().equals(entry.getValue().getPassword()) || scr.getPwd2().equals(entry.getValue().getPassword()) || scr.getEmail1().equals(entry.getValue().getEmail()) || scr.getEmail2().equals(entry.getValue().getEmail())){ objects.add(userMap.get(entry.getKey())); } } return objects; } public class Screening { String pwd1; String pwd2; String email1; String email2;
php+mvc模式的登陆口验证码可以点击刷新,不会自动刷新,求大神解决
1:描述问题:网站首页登陆口不管如何刷新[F5],验证码都不会变。但是点击验证码的话可以变为新的验证码!而且我们使用验证码登陆成功后同时退出来,此时登陆口的验证码还是之前使用过的验证码,没有更新!请大神帮我解决下,贴出正确的代码!因为本人不是很懂,只会照葫芦画瓢!万分感谢!无解决方案的请别回复了谢谢! 文件名:PassportController 代码如下,这个应该是控制器 /* 生成验证码 */ public function verify() { $config = [ 'fontSize' => 19, // 验证码字体大小 'length' => 4, // 验证码位数 'imageH' => 34 ]; $Verify = new Verify($config); $Verify->entry(); } /* 验证码校验 */ public function check_verify($code, $id = '') { $verify = new \Think\Verify(); $res = $verify->check($code, $id); $this->ajaxReturn($res, 'json'); } public function accessRules() { return array( array('allow', // 允许所有用户访问 'login' 动作. 'users'=>array('*'), ), array('allow', // 允许认证用户访问所有动作 'users'=>array('@'), ), array('deny', // 拒绝所有的用户。 'users'=>array('*'), ), ); } /* 异地登录检测 */ public function actionPlaceOtherLogin() { if(isset($_POST['username']) && $_POST['username']!="" && isset($_POST['pwd']) && $_POST['pwd']) { $siteLogin=new SiteLoginForm; $siteLogin->username=$_POST['username']; $siteLogin->password=$_POST['pwd']; $siteLogin->verifyCode=$_POST['verifyCode']; $siteLogin->rememberMe=false; if($siteLogin->validate())//用户名密码正确 { $userinfo=User::model()->findByAttributes(array( 'Username'=>$_POST['username'], 'PassWord'=>md5($_POST['pwd']) )); if($userinfo->Status==0)//用户帐号没有被冻结,处于正常状态 { if($userinfo->PlaceOtherLogin==0)//用户没有开启异地登录,则允许用户直接提交登录 { echo "true"; }else//开启异地登录 { //1.检查此次登录的ip与最近一次登录的ip是否相同 $lastLoginLog=Loginlog::model()->find(array( 'condition'=>'userid='.$userinfo->id, 'order'=>'id desc' )); if($lastLoginLog->loginip===XUtils::getClientIP())//如果本次登录ip与最近一次登录ip相同则允许用户直接提交 { echo "true"; }else//如果不同则返回通知使用短信验证 { echo $userinfo->Phon;//需要手机接手短信验证码,返回手机号码,以便发送短信进行验证 } } }else//帐号被冻结 { echo "LOCK"; } }else { echo "FAIL"; } } } // 登陆口的文件名:index 代码如下 // <link rel="stylesheet" type="text/css" href="<?php echo VERSION2;?>2_files/index.css"> <div class="banNer"><!--首页幻灯--> <ul class="rslides" id="slider"> <li style="background: url(<?php echo VERSION2;?>img/banner/banner_tg.jpg) no-repeat center top;"> <li style="background: url(<?php echo VERSION2;?>img/banner/003.jpg) no-repeat center top;"> </li> </ul> <!--登录区域--> <div class="login_frame_bg" <?php if(Yii::app()->user->getId())echo 'style="display:none;"';?>> <div class="login_frame"> <span class="warningSpan"<?php if(isset($_GET['loginStatus']) && $_GET['loginStatus']=='fail') echo 'style="display:block;"';?>>用户名或密码错误</span> <div id="myForm"> <table> <form method="post" onsubmit="return checkLogin()" action="<?php echo $this->createUrl('passport/login');?>"> <tbody> <tr> <td> <div class="login_mailbox"> <input type="hidden" name="User[position]" value="index" /> <input id="lusername" type="text" name="User[Username]" autocomplete="off" placeholder="用户名"> </div> </td> </tr> <tr> <td> <p class="zq" id="miaoname" style="margin:-15px 0px 10px;"></p> </td> </tr> <tr> <td> <div class="login_ps"> <input id="lpassword" type="password" name="User[PassWord]" name="LoginForm[password]" placeholder="请输入密码"> </div> </td> </tr> <tr> <td> <table> <tr> <td> <input type="text" name="User[VerifyCode]" class="" placeholder="请输入右边验证码" style=" width: 170px; margin-right: 5px; border-radius: 5px; line-height: 35px; border: 1px solid #fff; padding-left: 5px;" id="verifyCode" /> </td> <td> <?php $this->widget( 'CCaptcha', array('showRefreshButton'=>false, 'clickableImage'=>true, 'imageOptions'=>array( 'alt'=>'点击换图', 'title'=>'点击换图', 'style'=>'cursor:pointer; background:#fff; height:27px; border-radius:5px;' ) ) ); ?> </td> </tr> </table> </td> </tr> <tr> <td> <p class="zq" style="height: 10px;"></p> </td> </tr> <tr> <td> <p id="miaopwd" class="zq" style="margin:-15px 0px 10px;"></p> </td> </tr> <tr> <td> <li style=" color:#fff; font-size:12px;"><input name="User[rememberMe]" type="checkbox" style="position: relative; top: 3px; width:12px;" /> 下次自动登录<a href="javascript:;" class="forgetPwd" style=" float:right; margin-right:28px; color:white;">忘记密码?</a></li><br /> </td> </tr> <tr> <td> <button class="login-btn" id="login_btn">登录</button> </td> </tr> <tr> <td> <span><a href="<?php echo $this->createUrl('passport/regist');?>" id="a">还没有账号?点击注册>></a></span> </td> </tr> </tbody> <form> </table> </div> </div> </div> <div class="indIntr" style="background="achose.png" ><!--系统优势--> <div class="why_main4 clearfix"> </div> </div> <script> //登录表单检测 function checkLogin() { if($("#lusername").val()=="") { layer.tips('用户名不能为空', '#lusername'); return false; }else if($("#lpassword").val()=="") { layer.tips('密码不能为空', '#lpassword'); return false; }else if($("#verifyCode").val()=="") { layer.tips('验证码不能为空', '#verifyCode'); return false; }else { var submitStatus=0;//提交状态初始化verifyCode var phone=0;//手机号码初始化 //检查是否开启异地登录 $.ajax({ type:"POST", url:"<?php echo $this->createUrl('passport/placeOtherLogin');?>", data:{ "username":$("#lusername").val(), "pwd":$("#lpassword").val(), "verifyCode":$("#verifyCode").val(), }, async:false, success:function(msg) { if(msg=="true")//不用检测 { submitStatus=1; }else if(msg=="FAIL")//用户名或密码不正确 { } else if(msg=="LOCK")//用户帐户被冻结 { submitStatus=3; }else//需要发送手机验证码 { phone=msg;//赋值用户手机号 submitStatus=2; } } }); /*alert(submitStatus); exit;*/ //检查是否开启异地登录 if(submitStatus==0)//用户名密码不正确 { layer.tips('用户名,密码或验证码不正确', '#lusername', { tips: [1, '#0FA6D8'] //还可配置颜色 }); return false; }else if(submitStatus==3) { //询问框 layer.confirm('<span style="color:red;">您的帐户已被冻结,如有需要请联系客服人员</span>', { btn: ['知道了'] //按钮 }); return false; }else if(submitStatus==1)//直接提交 { return true; }else//2表示需要发送短信验证码 { //发送验证码 $.ajax({ type:"POST", url:"<?php echo $this->createUrl('site/sms');?>", data:{"phone":phone,"phoneCode":"DONE"}, async:false, success:function(msgCode) { if(msgCode=="SUCCESS") { //询问框 layer.confirm('<span style="color:red;">短信发送成功(异地登录请输入手机验证码)</span><br/>验证码<input class="text1 phoneCodeVal" name="phoneCodeVal" />', { btn: ['确定提交'] //按钮 },function(){ if($(".phoneCodeVal").val()=="")//验证码不为空 { layer.tips('验证码不能为空', '.phoneCodeVal'); }else{ //发送手机号与验证码去验证正确性 $.ajax({ type:"POST", url:"<?php echo $this->createUrl('passport/userCheckPhoneAndCode');?>", data:{"phone":phone,"phoneCode":$(".phoneCodeVal").val()}, async:false, success:function(msgCertain) { if(msgCertain=="SUCCESS")//手机验证码检测通过 { //验证通过直接进行提交登录 $.ajax({ type:"POST", url:"<?php echo $this->createUrl('passport/codePassLogin');?>", data:{"username":$("#lusername").val(),"pwd":$("#lpassword").val()}, async:false, success:function(msglogin) { if(msglogin=="SUCCESS")//登录成功刷新当前页面 { location.reload(); //询问框 }else//登录异常刷新当前页面 { layer.confirm('<span style="color:red;">登录异常</span>,您可以联系客服人员', { btn: ['知道了'] //按钮 }); } } }); //验证通过直接进行提交登录 }else if(msgCertain=="CODEFAIL")//验证不正确 { layer.tips('验证码不正确', '.phoneCodeVal'); }else//手机号异常 { layer.tips('手机号码异常', '.phoneCodeVal'); } } }); //发送手机号与验证码去验证正确性 } }); }else { //询问框 layer.confirm('<span style="color:red;">异地登录验证-短信发送失败,可能发送次数过多</span>,您可以联系客服人员', { btn: ['知道了'] //按钮 }); phoneAndCodeCheckStatus=0; } } }); //发送短信验证码结束 return false; } } } //忘记密码 $(".forgetPwd").click(function(){ layer.open({ type: 2, title:'找回密码', area: ['375px','270px'], skin: 'layui-layer-rim', //加上边框 content: ['<?php echo $this->createUrl('passport/forgetPwd');?>', 'no'] }); }); </script> // 能帮我解决问题的才回复,或者还需要我提供什么的请留言,谢谢了,
easyui搜索框查询回来的数据怎么显示出来啊
1.我现在问题是,在打开页面的时候,调用后台的一个方法,把表格所有的数据 显示在了datagrid上,现在想在页面加个搜索框,输入用户名,点击搜索的时 候,后台会根据前端传来的参数,调用另一个方法执行相关的查询语句,然后把数据返回给前端。 ===问题来了,前端接收到数据后,怎么显示在已经获取了所有数据的在datagrid上呢? 这我相关的代码 ``` <body> <script > $(function (){ var flag ; // 判断新增和修改方法 var url;//全局变量,存储点击对话框保存按钮后,提交请求的URL地址 $('#a').datagrid({ idField:'id',//只要创建数据表格 就必须要加 idField fitColumns:true,//宽度自适应 url:'/ssm/getOperator', //geiOperator会查出表里所有数据 checkOnSelect:true,//为false,当用户仅在点击该复选框的时候才会被选中或取消。 fitColumns: true, columns:[[ {field:'id',checkbox:true}, {field:'operator_id',title:'编号',width:100,halign:'center',align:'center'}, {field:'username',title:'账户',width:100,halign:'center',align:'center'}, {field:'password',title:'密码',width:100,halign:'center',align:'center'}, {field:'operator_name',title:'姓名',width:100,halign:'center',align:'center'} ]], pagination:true,//在底部显示分页 pageSize:'5',//每页显示多少个 pageList:[5,10,20], ``` ``` $('#btn3').click(function(){ var operator_name=document.getElementById('searchbtn').value; var operator={"operator_name":operator_name}; var jsonData= JSON.stringify(operator); $.ajax({ type: 'post' , url: "/ssm/findOperByName" , cache:false , data:jsonData, dataType:'json' , contentType : "application/json;charset=UTF-8", success:function(result){ //1 关闭窗口 /* $('#mydialog').dialog('close'); */ //2刷新datagrid /* $('#a').datagrid('reload'); */ /* $('#a').datagrid('clearSelections'); */ //获取表头数据成功后,使用easyUi的datagrid去生成表格 }, error:function(result){ alert("执行失败"); } }); ``` btn3就是我点击搜索的按钮。但搜索成功后数据不会显示在表格里 如果能解决,可以有偿
jquerymobile写的一个登陆页面问题
用jquerymobile写了一个登陆页面,后台是spring3+mybatis,主要的思路是异步提交验证,如果验证失败,直接在页面上提示错误信息,验证成功则通过changePage刷新页面。 遇到的问题是: 1、在spring的controller中返回这个页面后,登录页面虽然展现出来了,但是$(document).ready(function() {...})没有起作用,手工强制刷新页面可以起作用; 2、Ajax的POST方式没有起作用,点击按钮总是GET方式。。。 页面代码如下,请各位大侠帮看下,真心感谢! <%@ page language="java" pageEncoding="UTF-8" %> <%@ include file="/WEB-INF/views/include/taglibs.jsp" %> <!DOCTYPE html> <html> <head> <title>login</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css" /> <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script type="text/javascript"> function onSuccess(data, status) { data = $.parseJSON(data) //data = $.trim(data); if(data.flag == "Y") { //成功,进入新页面 $.mobile.changePage(data.url); } else { $("#message").css("color", "#ff0000"); $("#message").text(data.msg); } } $(document).ready(function() { alert("ready"); $("#btnLogin").click(function(e){ var formData = $("#frmLogin").serialize(); alert(formData); $.ajax({ type: "POST", url: "${ctx}/login", cache: false, data: formData, success: onSuccess }); e.preventDefault(); }); }); </script> <script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script> </head> <body> <div id="message"></div> <form id="frmLogin"> <label for="memberId">会员ID:</label> <input name="memberId" id="memberId" data-mini="true" data-clear-btn="true" type="text" autofocus required> <label for="password">密码:</label> <input name="password" id="password" data-mini="true" type="password" autofocus required> <br/> <div align="center"> <input value="提交验证" id="btnLogin" type=submit data-inline="true" data-mini="true" data-icon="check" data-theme="b"> <!-- <input value="重 填" type="reset" data-inline="true" data-mini="true" data-icon="delete" data-theme="b"> --> </div> </form> </body> </html>
我想请教一下,ASP, JS的执行顺序
``` <html> <head> 引入JQ 略 <script> $.ajax({ url : “temp.asp”, data:{"w":screen.width},// temp.asp页面中,将接收到的值写入session("w") cache : false, async : false,//同步 type : "get", dataType : 'html', error: function(){ //失败 alert('请求失败!'); }, success : function (data){ if (data=="ok") { } else {alert("错误信息:"+data); } } }); </script> </head> <body> <% response.write session("w") %> 为什么这里得不到 session("w")的值呢?刷新页面才可以显示,刷新再显示就没有意义了。 是不是跟执行顺序什么的有关系,有大神解答一下吗? </body> </html> ```
关于Spring boot + SpringSecurity +jwt token失效的问题
比如我登abc的用户,然后我在另一个地点也登abc的用户,那前一个登陆的在刷新或者请求接口的时候要登出, 或者是我后台改了abc的密码,那abc这个账户在刷新请求接口的时候要登出。 框架我搭好了 代码如下: 生成token工具类: ``` public class JwtTokenUtil { private static InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("jwt.jks"); // 寻找证书文件 private static PrivateKey privateKey = null; private static PublicKey publicKey = null; static { // 将证书文件里边的私钥公钥拿出来 try { KeyStore keyStore = KeyStore.getInstance("JKS"); // java key store 固定常量 keyStore.load(inputStream, "123456".toCharArray()); privateKey = (PrivateKey) keyStore.getKey("jwt", "123456".toCharArray()); // jwt 为 命令生成整数文件时的别名 publicKey = keyStore.getCertificate("jwt").getPublicKey(); } catch (Exception e) { e.printStackTrace(); } } public static String generateToken(String subject, int expirationSeconds, String salt) { return Jwts.builder() .setClaims(null) .setSubject(subject) .setExpiration(new Date(System.currentTimeMillis() + expirationSeconds * 1000)) // .signWith(SignatureAlgorithm.HS512, salt) // 不使用公钥私钥 .signWith(SignatureAlgorithm.RS256, privateKey) .compact(); } public static String parseToken(String token, String salt) { String subject = null; try { Claims claims = Jwts.parser() // .setSigningKey(salt) // 不使用公钥私钥 .setSigningKey(publicKey) .parseClaimsJws(token).getBody(); subject = claims.getSubject(); } catch (Exception e) { } return subject; } } ``` 登陆成功后生成JTWtoken : ``` @Component public class AjaxAuthenticationSuccessHandler implements AuthenticationSuccessHandler { @Override public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException { ResponseBase responseBase = new ResponseBase(); responseBase.setCode("200"); responseBase.setMassage("Login Success!"); String jwtToken = JwtTokenUtil.generateToken(String.valueOf(authentication.getPrincipal()), 300, "_secret"); responseBase.setJwtToken(jwtToken); httpServletResponse.getWriter().write(JSON.toJSONString(responseBase)); } } ``` 监听器: ``` @Component public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { @Autowired AdminSysUserSecurityService adminSysUserSecurityService; @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { String authHeader = request.getHeader("Authorization"); if (authHeader != null && authHeader.startsWith("Bearer ")) { final String authToken = authHeader.substring("Bearer ".length()); String username = JwtTokenUtil.parseToken(authToken, "_secret"); if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) { UserDetails userDetails = adminSysUserSecurityService.loadUserByUsername(username); if (userDetails != null) { UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); SecurityContextHolder.getContext().setAuthentication(authentication); } } } chain.doFilter(request, response); } } ``` ``` @Component("rbacauthorityservice") public class RbacAuthorityService { public boolean hasPermission(HttpServletRequest request, Authentication authentication) { Object userInfo = authentication.getPrincipal(); boolean hasPermission = false; if (userInfo instanceof UserDetails) { String username = ((UserDetails) userInfo).getUsername(); //获取资源 Set<String> urls = new HashSet(); urls.add("/**/**"); // 这些 url 都是要登录后才能访问,且其他的 url 都不能访问! Set set2 = new HashSet(); Set set3 = new HashSet(); AntPathMatcher antPathMatcher = new AntPathMatcher(); for (String url : urls) { if (antPathMatcher.match(url, request.getRequestURI())) { hasPermission = true; break; } } return hasPermission; } else { return false; } } } ``` 配置: ``` @Configuration public class AdminWebSecurityConfig extends WebSecurityConfigurerAdapter { @Value("${pay.strength}") private int strength; @Autowired private AdminSysUserSecurityService adminSysUserSecurityService; @Bean public PasswordEncoder passwordEncoder(){ // return NoOpPasswordEncoder.getInstance();//不对密码加密 return new BCryptPasswordEncoder(strength);//秘钥迭代次数为 2^strength,strength取值在 4-31 之间,默认10 } @Autowired AjaxAuthenticationEntryPoint authenticationEntryPoint; // 未登陆时返回 JSON 格式的数据给前端(否则为 html) @Autowired AjaxAuthenticationSuccessHandler authenticationSuccessHandler; // 登录成功返回的 JSON 格式数据给前端(否则为 html) @Autowired AjaxAuthenticationFailureHandler authenticationFailureHandler; // 登录失败返回的 JSON 格式数据给前端(否则为 html) @Autowired AjaxLogoutSuccessHandler logoutSuccessHandler; // 注销成功返回的 JSON 格式数据给前端(否则为 登录时的 html) @Autowired AjaxAccessDeniedHandler accessDeniedHandler; // 无权访问返回的 JSON 格式数据给前端(否则为 403 html 页面) @Autowired JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter; // JWT 拦截器 @Autowired SelfAuthenticationProvider provider; // 自定义安全认证 @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { // 加入自定义的安全认证 auth.authenticationProvider(provider); } @Override public void configure(HttpSecurity http)throws Exception{ //开启HttpSecurity配置 http.csrf().disable() .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) // 使用 JWT,关闭token .and() .httpBasic().authenticationEntryPoint(authenticationEntryPoint) .and() .authorizeRequests() // .antMatchers("/db/**").hasRole("DB") // .antMatchers("/user/**").hasRole("USER") // .antMatchers("/admin/**").hasRole("ADMIN") // .antMatchers("/user/**").access("hasAnyRole('ADMIN','ROOT')") // .antMatchers("/db/**").access("hasAnyRole('ADMIN') and hasRole('DBA')") //除了前面路径,用户访问其他URL都必须认证后访问 .anyRequest() .access("@rbacauthorityservice.hasPermission(request,authentication)") // RBAC 动态 url 认证 .and() //开启表单登录,同事配置了登入接口为/login .formLogin() /* //该接口主要方便ajax或者移动端登入 .loginProcessingUrl("/login") //设置登录成功跳转页面,error=true控制页面错误信息的展示 .successForwardUrl("/index").failureUrl("/login?error=true") */ //登入接口都不需要认证 .successHandler(authenticationSuccessHandler) // 登录成功 .failureHandler(authenticationFailureHandler) // 登录失败 .permitAll() .and() //开启注销登入配置 .logout() .logoutSuccessHandler(logoutSuccessHandler) .permitAll(); http.rememberMe().rememberMeParameter("remember-me") .userDetailsService(adminSysUserSecurityService).tokenValiditySeconds(300); http.exceptionHandling().accessDeniedHandler(accessDeniedHandler); // 无权访问 JSON 格式的数据 http.addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); // JWT Filter } ``` 登陆成功后获取token,postman测试: ![图片说明](https://img-ask.csdn.net/upload/201912/11/1576056718_177252.png) 可以 但是我重新调用新的登陆接口,相同用户名获取新的token后,原来的token依旧可以请求。 所以要在哪边配置 用户其它地方登陆,或者用户密码变更,jtwtoken失效
为什么 CKediter 4.3.2 版本 赋值 有时会失败
> Blockquote .NET web 程序, 我从服务段序列化数据源为json 到某变量 json_Model,在前段 赋值给一 js 对象。然后绑定到 ckediter 容器,打开页面 刷新,查看ckediter赋值情况,有时候就可以,有时候就失败,为什么呢? 备注: 这段代码 是在页面最底部 </body> 之前,前边已经引用了 ckediter 的库文件,请忽略序列化失败问题,因为我尝试了 在某个 div 内同时赋值,是成功的。另外,火狐里边是没问题了。ie8 有问题,时好时坏。 <script> CKEDITOR.disableAutoInline = true; //var editor = CKEDITOR.replace("Description"); var json = {"ContentID":10,"Title":"公司简介","SubTitle":null,"Summary":"公司简介","Description":"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 于绿色建筑和智慧能源的发展,保护资源,保护环境,为合作伙伴和客户创造长期的价值,提供高品质高价值的产品和技术咨  询、技术培训、系统设计及工程实施等服务。新锘威智能科技将始终致力于绿色建筑和智慧能源的发展,保护资源,保护环境,为合作伙伴和客户创造长期的价值,提供高品质高价值的产品和技术咨询、技术培训、系统设计、工程实施等服务。","ImageUrl":null,"ThumbImageUrl":null,"NormalImageUrl":null,"CreatedDate":"\/Date(1389618017463)\/","CreatedUserID":1,"LastEditUserID":1,"LastEditDate":"\/Date(1390578846707)\/","LinkUrl":null,"PvCount":0,"State":true,"ClassID":41,"Keywords":null,"Sequence":0,"IsRecomend":false,"IsHot":true,"IsColor":false,"IsTop":true,"Attachment":null,"Remary":null,"TotalComment":0,"TotalSupport":0,"TotalFav":0,"TotalShare":0,"BeFrom":null,"FileName":null,"Meta_Title":"","Meta_Description":"","Meta_Keywords":"","SeoUrl":"","SeoImageAlt":null,"SeoImageTitle":null,"StaticUrl":null} $(function () { $('#Description').ckeditor(); $('#Description').val(json.Description); });</script>
关于Provisional headers are shown的问题
前端页面使用的Ueditor,有一个很奇怪的问题,前端的Ajax提交代码如下: ``` function checkSensitiveWord(backUrl) { //var data = $("#article_form").serializeArray(); /* if(phone!="" && phone!=null){ backUrl ="/phone"+backUrl; } */ $('#article_form').ajaxSubmit({ url:"/article/sensitive", //data:data, type:'POST', cache:false, async:false, dataType:'json', success:function(data) { if (data.isError === "1") { layer.msg(data.msg, {icon : 2, time : 2000}); } else if (data.isError === "0") { // 不存在敏感词,直接提交 layer.alert(data.msg, function(index){ linkbt(backUrl); layer.close(index); }); } else { // 存在敏感词 layer.open({ area: ['450px', '220px'], content: data.msg, btn: ['替换并保存', '不替换并保存', '取消保存'], btn1: function(index, layero){ $('#filterWord').val("1"); layer.closeAll(); saveArticle(backUrl); }, btn2: function(index, layero){ $('#filterWord').val("0"); layer.closeAll(); saveArticle(backUrl); }, btn3: function(index, layero){ layer.closeAll(); return false; }, cancel: function(){ //右上角关闭回调 layer.closeAll(); return false; } }); } }, error : function() { layer.alert('操作失败,请刷新页面后重试!', {icon : 2, time : 5000}); return false; } }); } ``` 发现在Ueditor里头插入YouKu分享的视频iframe并且带有src属性的时候就会出现 ``` Provisional headers are shown ``` 这个提示,导致服务端接收不到这个请求(必现)已经确认的问题如下: 1、Ueditor的XSS的已经放开iframe以及相关的src等属性; 2、当在iframe中不写src属性的时候可以正常提交到服务器并且收到服务器应答; 3、当把iframe标签改为div标签且带上src属性的时候可以正常提交并收到应答; 4、在IE下以及在Chrome下尝试以上情况都必现,故可以排除是插件的问题,在别人的电脑也一样必现。 5、在Nginx的accesslog中在请求正常的情况下可以看到sensitive的请求,但是在出现“Provisional headers are shown”的时候不能看到sensitive的log. 6、这个ajax请求改为异步请求也是不能解决这个问题; 7、将form序列化之后直接通过ajax请求而不使用ajaxSubmit请求提交也是同样的问题。 8、假如正常提交的情况下接口返回非常快(1s以内)。 ![图片说明](https://img-ask.csdn.net/upload/201910/09/1570589935_761620.png) 请求会经过一个nginx的反代,但是检查nginx的配置,没有什么其他的安全设置。 现在这个问题完全没有头绪,不知道问题出在哪里,已经快颠覆了自己对代码的认识。 请各位遇到相似问题的童鞋予以指点,谢谢。
easyui回显数据,下拉框中内容第一次加载不出来,刷新一次才可以,求解决!!!
``` <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CreatePsyjs.aspx.cs" Inherits="RM_CNOOC.EDOC.RMDOC.CreatePsyjs" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE10;text/html; charset=utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge;text/html; charset=utf-8"/> <title></title> <link rel="stylesheet" type="text/css" href="../../Scripts/easyui/easyui.css"/> <link rel="stylesheet" type="text/css" href="../../Scripts/easyui/icon.css"/> <link rel="stylesheet" type="text/css" href="../../Scripts/easyui/color.css"/> <link rel="stylesheet" type="text/css" href="../../Scripts/easyui/demo.css"/> <script type="text/javascript" src="../../Scripts/easyui/jquery.min.js"></script> <script type="text/javascript" src="../../Scripts/easyui/jquery.easyui.min.js"></script> <script type="text/javascript" src="../../Scripts/easyui/datagrid-filter.js"></script> <style type="text/css"> .divcss5{width:1610px} .wby{color:rgb(128, 128, 128)} </style> </head> <body style="font-family:微软雅黑,'Times New Roman', Times, serif;"> <form id="fm" method="post" style="margin-top:10px;padding:0px 50px" runat="server"> <div style="margin-bottom:10px"> <div style="margin-bottom:10px"> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 报告名称:<input name="bgmc" id="bgmc" class="easyui-textbox" data-options="multiline:true,valueField:'value', textField:'text',required:true" style="width:90.3%"/> </div> <div style="margin-bottom:10px"> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 储量类型: <select name="cllx" id="cllx" class="easyui-combobox" data-options="valueField:'value', textField:'text',editable:false,required:true" style="width:15%"> <option value="00">>>>请选择<<<</option> <option value="0">新增</option> <option value="1">复算</option> <option value="2">核算</option> <option value="3">新增、复算</option> <option value="4">新增、核算</option> <option value="5">复算、核算</option> <option value="6">新增、复算、核算</option> </select> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 油气类别: <select name="id_yqlb" id="id_yqlb" class="easyui-combobox" data-options="valueField:'value', textField:'text',editable:false,required:true" style="width:15%"> <option value="1">石油</option> <option value="2">天然气</option> <option value="3">石油和天然气</option> </select> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 申报单位:<select name="sbdw" id="sbdw" class="easyui-combobox" data-options="valueField:'value', textField:'text',editable:false,required:true" style="width:40%"> <option value="1">中海石油(中国)有限公司</option> <option value="2">中国海洋石油总公司</option> <option value="3">中国海洋石油集团公司</option> <option value="4">中国海洋石油总公司、中海石油(中国)有限公司</option> <option value="5">中国海洋石油集团公司、中海石油(中国)有限公司</option> </select> </div> <div style="margin-bottom:10px"> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 评审时间:<input name="pssj" id="pssj" class="easyui-datebox" data-options="editable:false,required:true" style="width:15%"/> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 评审会议地址: <select name="pshydz" id="pshydz" class="easyui-combobox" data-options="valueField:'value', textField:'text',editable:false,required:true" style="width:15%"> <option value="1">北京</option> <option value="2">天津</option> <option value="3">上海</option> <option value="4">深圳</option> <option value="5">湛江</option> </select> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 编写单位:<select name="bxdw" id="bxdw" class="easyui-combobox" data-options="valueField:'value', textField:'text',editable:false,required:true" style="width:40%"> <option value="1">中海石油(中国)有限公司天津分公司</option> <option value="2">中海石油(中国)有限公司湛江分公司</option> <option value="3">中海石油(中国)有限公司深圳分公司</option> <option value="4">中海石油(中国)有限公司上海分公司</option> <option value="5">中联煤层气责任有限公司</option> </select> </div> <div style="margin-bottom:10px" class="d1"> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 评审汇报人:<input name="pshbr" id="pshbr" class="easyui-textbox" data-options="valueField:'value', textField:'text',required:true" style="width:15%"/> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 评审专家组组长:<select name="pszjzzz" id="pszjzzz" data-options="valueField:'value', textField:'text',editable:false,required:true" style="width:15%;"> </select> &nbsp&nbsp&nbsp&nbsp&nbsp 专家组成员:<select name="pszjzcy" id="pszjzcy" data-options="multiple:true,valueField:'value', textField:'text',editable:false" style="width:37%;"> </select> <a id="zjzcy_add" href="javascript:OpenAddZjzcy(0);" class="easyui-linkbutton" data-options="iconCls:'icon-add',plain:'true'" style="width:26px;height:26px">新增</a> </div> <div style="margin-bottom:10px"> 评审机构负责人:<input name="psjgfzr" id="psjgfzr" class="easyui-textbox" data-options="valueField:'value', textField:'text',required:true" style="width:15%"/> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 会议主持人:<input name="hyzcr" id="hyzcr" class="easyui-textbox" data-options="valueField:'value', textField:'text',required:true" style="width:15%"/> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 申报日期 : <input name="sbrq" id="sbrq" class="easyui-datebox" data-options="editable:false,required:true" style="width:10%"/> &nbsp&nbsp&nbsp&nbsp 会议日期 : <input name="hyrq01" id="hyrq01" class="easyui-datebox" data-options="editable:false,required:true" style="width:10%"/>~ <input name="hyrq02" id="hyrq02" class="easyui-datebox" data-options="editable:false,required:true" style="width:10%"/> </div> <div style="margin-bottom:10px" class="d1"> 评审意见书执笔人: <select name="psyjszbr" id="psyjszbr" data-options="valueField:'value', textField:'text',editable:false,required:true" style="width:12%"> <option>>>>请选择<<<</option> </select> <a id="psyjszbr_add" href="javascript:OpenAddZjzcy(1);" class="easyui-linkbutton" data-options="iconCls:'icon-add',plain:'true'" style="width:26px;height:26px">新增</a> </div> <hr /> <div class="divcss5"> <div style="margin-bottom:10px"> <h2>一、油田申报区概况 </h2> </div> (一)位置、交通和自然地理概况: <div class="wby" style="margin-bottom:10px"> <input name="wzjtdl" id="wzjtdl" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:50%;height:150%"/> 示例说明:xx油田申报区位于中国xx海域,距香港约xxkm....... </div> (二)地质概况: <div class="wby" style="margin-bottom:10px"> <input name="dlgk" id="dlgk" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:50%;height:150%"/>示例说明: </div> (三)储层基本特征: <div class="wby" style="margin-bottom:10px"> <input name="ccjbtz" id="ccjbtz" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:50%;height:150%"/>示例说明: </div> (四)油藏特征: <div class="wby" style="margin-bottom:10px"> <input name="yctz" id="yctz" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:50%;height:150%"/>示例说明: </div> (五)共伴生矿产资源简况: <div class="wby" style="margin-bottom:10px"> <input name="gbskczy" id="gbskczy" class="easyui-textbox" value="申报区目的层系内尚未发现除油气以外的共伴生矿产资源。" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:50%;height:150%"/>示例说明: </div> <div style="margin-bottom:10px"> <h2>二、油田勘探开发利用简况 </h2> </div> (一)以往勘探工作: <div class="wby" style="margin-bottom:10px"> <input name="ywktgz" id="ywktgz" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:50%;height:150%"/>示例说明: </div> (二)油田开发利用简况: <div class="wby" style="margin-bottom:10px"> <input name="ytkfly" id="ytkfly" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:50%;height:150%"/>示例说明: </div> (三)毗邻油田的有用信息: <div class="wby" style="margin-bottom:10px"> <input name="plytyyxx" id="plytyyxx" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:50%;height:150%"/>示例说明: </div> (四)本次工作情况:<br /> <h3>1.矿业权情况</h3> <div id="div_kyq"></div> <div style="margin-bottom:10px"> <h3>2.与生态环境保护区重叠情况</h3> <select name="sthjbhq" id="sthjbhq" class="easyui-combobox" data-options="valueField:'value', textField:'text',editable:false,required:true" style="width:7%"> <option value="1">有</option> <option value="2">无</option> </select> </div> <div style="margin-bottom:10px" id="div_id_sthjbhqmc"> 生态环境保护区名称:<input name="sthjbhqmc" id="sthjbhqmc" class="easyui-textbox" data-options="valueField:'value', textField:'text',editable:true,required:true" style="width:15%"/> </div> </div> <h3>3.勘探工作情况(申报区已完成的勘探工作量和取资料情况如下:)</h3> (1)地震: <div class="wby" style="margin-bottom:10px"> <input name="ktgz_dz" id="ktgz_dz" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> (2)钻井: <div class="wby" style="margin-bottom:10px"> <input name="ktgz_zj" id="ktgz_zj" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> (3)测井: <div class="wby" style="margin-bottom:10px"> <input name="ktgz_cj" id="ktgz_cj" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> (4)测试: <div class="wby" style="margin-bottom:10px"> <input name="ktgz_cs" id="ktgz_cs" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> (5)分析化验: <div class="wby" style="margin-bottom:10px"> <input name="ktgz_fxhy" id="ktgz_fxhy" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> <div id="div_id_xzgzl"> <div id="div_top_id_xzgzl"></div> </div> <div class="wby" style="margin-bottom:10px"> <input name="ktgz_yfhsqxb" id="ktgz_yfhsqxb" class="easyui-textbox" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> <div style="margin-bottom:10px"> <h2>三、储量申报情况</h2> </div> <div style="margin-bottom:10px"> (一)产量起算标准 </div> <div style="margin-bottom:10px"> 储量计算截止日期: <input name="cljsjzrq" id="cljsjzrq" class="easyui-datebox" data-options="editable:false,required:true" style="width:10%" /> 地质储量计算方法: <select name="dzcljsff" id="dzcljsff" class="easyui-combobox" data-options="valueField:'value', textField:'text',editable:false,required:true" style="width:10%"> <option value="1">容积法</option> <option value="2">动态法</option> <option value="3">概率法</option> </select> </div> <div style="margin-bottom:10px"> <select name="id_clqsbz_y" id="id_clqsbz_y" class="easyui-combobox" data-options="valueField:'value', textField:'text',editable:false" style="width:20%"> <option value="1">≤500m-2.5</option> <option value="2">>500m~≤1000-4.0</option> <option value="4">>1000m~≤2000-7.5</option> <option value="5">>2000m~≤3000-12.5</option> <option value="6">>3000m~≤4000-17.5</option> <option value="7">>4000m-25.0</option> </select>埋藏深度;单井油产量 <select name="id_clqsbz_q" id="id_clqsbz_q" class="easyui-combobox" data-options="valueField:'value', textField:'text',editable:false" style="width:20%"> <option value="1">≤500m-0.3</option> <option value="2">>500m~≤1000-0.5</option> <option value="3">>1000m~≤2000-1.0</option> <option value="4">>2000m~≤3000-2.0</option> <option value="5">>3000m~≤4000-2.5</option> <option value="6">>4000m-3.5</option> </select>&nbsp&nbsp 埋藏深度;单井气产量 </div> (二)储量估算结果<br /> <div style="margin-bottom:10px"> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 新增储量名称:<input name="xzclmc" id="xzclmc" class="easyui-textbox" data-options="valueField:'value', textField:'text',editable:true,required:true" style="width:30.5%"/> </div> <div style="margin-bottom:10px"> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 矿权类别:<input name="kqlb" id="kqlb" class="easyui-textbox" data-options="valueField:'value', textField:'text',editable:true,required:true" style="width:10%"/> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 海域: <select name="hy" id="hy" class="easyui-combobox" data-options="valueField:'value', textField:'text',editable:false,required:true" style="width:10%"> <option value="1">渤海</option> <option value="2">东海</option> <option value="3">黄海</option> <option value="4">南海</option> </select> </div> (三)储量参数选取:<br /> 1.储量状态界定: <div class="wby" style="margin-bottom:10px"> <input name="clztjd" id="clztjd" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> 2.计算单元划分: <div class="wby" style="margin-bottom:10px"> <input name="jsdyhf" id="jsdyhf" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> 3.含油面积圈定: <div class="wby" style="margin-bottom:10px"> <input name="hymjqd" id="hymjqd" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> 4.有效厚度: <div class="wby" style="margin-bottom:10px"> <input name="yxhd" id="yxhd" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> 5.有效孔隙度: <div class="wby" style="margin-bottom:10px"> <input name="yxkxd" id="yxkxd" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> 6.原始含油饱和度: <div class="wby" style="margin-bottom:10px"> <input name="yshybhd" id="yshybhd" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> 7.地面原油密度、原始原油体积系数和气油比: <div class="wby" style="margin-bottom:10px"> <input name="dmyymd_ysyytjxshqyb" id="dmyymd_ysyytjxshqyb" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> 8.技术可采储量: <div class="wby" style="margin-bottom:10px"> <input name="jskccl" id="jskccl" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> 9.经济可采储量: <div class="wby" style="margin-bottom:10px"> <input name="jjkccl" id="jjkccl" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> <div id="div_id_clbhyyfx"> <div id="div_top_id_clbhyyfx"></div> 地质储量变化原因: <div style="margin-bottom:10px"> <input name="dzclbhyyfx" id="dzclbhyyfx" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/><br /> </div> 可采储量变化原因: <div style="margin-bottom:10px"> <input name="kcclbhyyfx" id="kcclbhyyfx" class="easyui-textbox" value="无" data-options="multiline:true,valueField:'value', textField:'text',editable:true,required:true" style="width:72%;height:150%"/><br /> </div> </div> <div style="margin-bottom:10px"> <h2>四、储量报告评审情况</h2> </div> <h3>调查</h3> <div style="margin-bottom:10px"> &nbsp 油田类型: <select name="ytlx" id="ytlx" class="easyui-combobox" data-options="valueField:'value', textField:'text',editable:false,required:true" style="width:10%"> <option value="00">>>>请选择<<<</option> <option value="1">中型</option> <option value="2">大型</option> </select> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 调查日期: <input name="dc_rq01" id="dc_rq01" class="easyui-datebox" data-options="required:true" style="width:10%"/>至 <input name="dc_rq02" id="dc_rq02" class="easyui-datebox" data-options="required:true" style="width:10%"/> </div> <div style="margin-bottom:10px"> 调查组组长:<input name="dc_zz" id="dc_zz" class="easyui-textbox" data-options="required:true" style="width:10%"/> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 成员:<input name="dc_cy" id="dc_cy" class="easyui-textbox" data-options="valueField:'value', textField:'text',editable:true,required:true" style="width:21%"/> 调查现场: <input name="dc_xc" id="dc_xc" class="easyui-textbox" data-options="valueField:'value', textField:'text',editable:true,required:true" style="width:19%"/> </div> <h3>主要评审意见</h3> <div style="margin-bottom:10px"> 参数是否有修改: 没有<input type="radio"name="zypsyj" value="0" /> 有<input type="radio"name="zypsyj" value="1" checked="checked"/> </div> 申报区为: <div class="wby" style="margin-bottom:10px"> <input name="sbq" id="sbq" class="easyui-textbox" data-options="multiline:true,valueField:'value', textField:'text',editable:true" style="width:72%;height:150%"/>示例说明: </div> <div style="margin-bottom:10px"> 申报的储量报告包括主报告1份、附图表册1份,还包括: <input name="sbcl" id="sbcl" class="easyui-textbox" data-options="valueField:'value', textField:'text',editable:true,required:true" style="width:20%"/> </div> 评审组认为: <div class="wby" style="margin-bottom:10px"> <input name="psz_yj" id="psz_yj" class="easyui-textbox" value="无" data-options="multiline:true, textField:'text',editable:true,required:true" style="width:72%;height:150%"/>示例说明: </div> <h2>六、说明与建议</h2> <div style="margin-bottom:10px"> 注意材料: <input name="zycl" id="zycl" class="easyui-textbox"data-options="valueField:'value', textField:'text',editable:true,required:true" style="width:10%"/> </div> <h3>附件</h3> <div style="margin-bottom:10px"> 与矿业权许可证范围叠合图(局部放大): 无<input type="radio"name="fj_kyqxkz_jb" value="0" /> 有<input type="radio"name="fj_kyqxkz_jb" value="1" checked="checked"/> </div> <div style="margin-bottom:10px"> &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 与海域范围叠合图(局部放大): 无<input type="radio"name="fj_hy_jb" value="0" /> 有<input type="radio"name="fj_hy_jb" value="1" checked="checked"/> </div> </div> <input type="hidden" name="bgmc_text01" id="bgmc_text01" /> <input type="hidden" name="bgmc_text02" id="bgmc_text02" /> <input type="hidden" name="sbdw_text" id="sbdw_text" /> <input type="hidden" name="bxdw_text" id="bxdw_text" /> <input type="hidden" name="cllx_text" id="cllx_text" /> <input type="hidden" name="pszjzzz_text" id="pszjzzz_text" /> <input type="hidden" name="xzcy" id="xzcy" /> <input type="hidden" name="pszjzcy_text" id="pszjzcy_text" /> <input type="hidden" name="yqlb_text" id="yqlb_text" /> <input type="hidden" name="psyjszbr_text" id="psyjszbr_text" /> <input type="hidden" name="xzzbr" id="xzzbr" /> <input type="hidden" name="id_clqsbz_text" id="id_clqsbz_text" /> <input type="hidden" name="id_clqsbz_y_text" id="id_clqsbz_y_text" /> <input type="hidden" name="id_clqsbz_q_text" id="id_clqsbz_q_text" /> <input type="hidden" name="dzcljsff_text" id="dzcljsff_text" /> <input type="hidden" name="hy_text" id="hy_text" /> <input type="hidden" name="pshydz_text" id="pshydz_text" /> <input type="hidden" name="ytlx_text" id="ytlx_text" /> </form> <div id="dlg-buttons"> <a id="btn_add_doc" href="javascript:saveDoc()" class="easyui-linkbutton c6" data-options="iconCls:'icon-ok'" style="width:90px">保存</a> <a id="btn_export_doc" href="javascript:exportDoc();" data-options="iconCls:'icon-ok'" class="easyui-linkbutton c6" style="width:90px">导出</a> </div> <div id="div_addCY01" class="easyui-dialog" style="width:600px" data-options="closed:true,modal:true,border:'thin'"> <form id="fm1" enctype="multipart/form-data" style="margin:10px 0px;padding:0px 50px" method="post"> 专家组成员: <div style="margin-bottom:10px"> <input id="pszjzxzcy" name="fm1_pszjzxzcy" class="easyui-textbox" multiple:'multiple'" style="width:80%"/> <a id="save" href="javascript:AddZjzcy(0)" class="easyui-linkbutton c6" data-options="iconCls:'icon-ok'" style="width:80px">保存</a> </div> </form> </div> <div id="div_addCY02" class="easyui-dialog" style="width:600px" data-options="closed:true,modal:true,border:'thin',buttons:'#div_save'"> <form id="fm2" enctype="multipart/form-data" style="margin:10px 0px;padding:0px 50px" method="post"> 评审意见书执笔人: <div style="margin-bottom:10px"> <input id="psyjsxzzbr" name="fm2_psyjsxzzbr" class="easyui-textbox" multiple:'multiple'" style="width:80%"/> <a id="save1" href="javascript:AddZjzcy(1)" class="easyui-linkbutton c6" data-options="iconCls:'icon-ok'" style="width:80px">保存</a> </div> </form> </div> <script type="text/javascript"> var uuid = "<%=uuid%>"; var load = "<%=load%>"; var kyqNumCount = 0; var kyqlxmc = ""; var pszjzxzcy = ""; var psyjsxzzbr = ""; //加载页面 if (load == "3") { $.ajax({ url: "ExportWord.ashx", data: { 'load': '3', 'uuid': uuid }, async: false, type: 'post', success: function (resultData) { var psyjs = JSON.parse(resultData); //回显矿业权情况 var kyqqk = [] ; var arr = psyjs["t"][0].kyqqk.split(';'); for(var i = 0;i<arr.length;i++){ var yiWei = []; var m = arr[i].split('-'); for(var j = 0;j<m.length;j++){ yiWei.push(m[j]); } kyqqk.push(yiWei); } var str = ""; for (var i = 0; i < psyjs["t"][0].kqsl; i++) { str += "<div id='div_id_kyq_kc_rq"+i+"'>" + "<div style='margin-bottom:10px'>" + "矿业权登记项目名称:<input name='kyqdjxmmc"+i+"' id='kyqdjxmmc"+i+"' value='"+ kyqqk[i][0] +"' class='easyui-textbox' data-options='editable:false' style='width:15%'/>" + "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" + "矿业权许可证号:<input name='kyqxkzh"+i+"' id='kyqxkzh"+i+"' value='"+kyqqk[i][1]+"' class='easyui-textbox' data-options='editable:false' style='width:10%'/>" + "</div>" + "<div style='margin-bottom:10px'>" + "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" + "有效期限自:" + "<input name='kyqrq0"+i+"' id='kyqrq0"+i+"' value='"+ kyqqk[i][4] +"' class='easyui-datebox' data-options='editable:false,required:true' style='width:7%'/>至" + "<input name='kyqrq1"+i+"' id='kyqrq1"+i+"' value='"+ kyqqk[i][5] +"' class='easyui-datebox' data-options='editable:false,required:true' style='width:7.5%'/>" + "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" + kyqqk[i][2]+"面积:<input name='kyqmj"+i+"' id='kyqmj"+i+"' value='"+ kyqqk[i][3] +"' class='easyui-textbox' data-options='editable:true,required:true' style='width:10%'/>" + "</div>" + "</div>"; kyqlxmc += kyqqk[i][2] + ","; kyqNumCount++; } $("#div_kyq").append(str); } }); } else { //新建数据 $.ajax({ url: "ExportWord.ashx", data: { 'load': '1', 'ytdm': getQueryString('ytdm'), 'nd': getQueryString('nd') }, async: false, type: 'post', success: function (resultData) { var psyjs = JSON.parse(resultData) var str = ""; for (var i = 0; i < psyjs["t"].length; i++) { var lxmc = psyjs["t"][i].KYQLXMC; var index=lxmc.lastIndexOf("\【"); lxmc = lxmc.substring(index + 1, lxmc.length); lxmc = lxmc.substring(0, lxmc.length - 1); str += "<div id='div_id_kyq_kc_rq"+i+"'>" + "<div style='margin-bottom:10px'>" + "矿业权登记项目名称:<input name='kyqdjxmmc"+i+"' id='kyqdjxmmc"+i+"' value='"+psyjs["t"][i].KYQMC+"' class='easyui-textbox' data-options='editable:false' style='width:15%'/>" + "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" + "矿业权许可证号:<input name='kyqxkzh"+i+"' id='kyqxkzh"+i+"' value='"+psyjs["t"][i].KYQXKH+"' class='easyui-textbox' data-options='editable:false' style='width:10%'/>" + "</div>" + "<div style='margin-bottom:10px'>" + "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" + "有效期限自:" + "<input name='kyqrq0"+i+"' id='kyqrq0"+i+"' class='easyui-datebox' data-options='editable:false,required:true' style='width:7%'/>至" + "<input name='kyqrq1"+i+"' id='kyqrq1"+i+"' class='easyui-datebox' data-options='editable:false,required:true' style='width:7.5%'/>" + "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" + lxmc+"面积:<input name='kyqmj"+i+"' id='kyqmj"+i+"' class='easyui-textbox' data-options='editable:true,required:true' style='width:10%'/>" + "</div>" + "</div>"; kyqlxmc += lxmc + ","; kyqNumCount++; } $("#div_kyq").append(str); } }); } $(document).ready(function () { GetOption(); //禁用文本框 $("#dc_rq01").textbox("disable"); $("#dc_rq02").textbox("disable"); $("#dc_cy").textbox("disable"); $("#dc_zz").textbox("disable"); $("#dc_xc").textbox("disable"); $("#sbq").textbox("disable"); $("#sbcl").textbox("disable"); $("#ktgz_yfhsqxb").textbox("disable"); $("#dzclbhyyfx").textbox("disable"); $("#kcclbhyyfx").textbox("disable"); // 填充数据 if (load == "3") { //回显数据 $.ajax({ url: "ExportWord.ashx", data: { 'load': '3', 'uuid': uuid }, type: 'post', success: function (resultData) { var psyjs = JSON.parse(resultData); $('#bgmc').textbox('setValue', psyjs["t"][0].bgmc); $('#cllx').textbox('setValue', psyjs["t"][0].cllx); if (psyjs["t"][0].cllx != "新增") { $("#ktgz_yfhsqxb").textbox("enable"); $("#dzclbhyyfx").textbox("enable"); $("#kcclbhyyfx").textbox("enable"); } $('#id_yqlb').textbox('setValue', psyjs["t"][0].yqlb); $('#pssj').textbox('setValue', psyjs["t"][0].pssj); $('#sbdw').textbox('setValue', psyjs["t"][0].sbdw); $('#bxdw').textbox('setValue', psyjs["t"][0].bxdw); $('#pshbr').textbox('setValue', psyjs["t"][0].pshbr); $('#hyzcr').textbox('setValue', psyjs["t"][0].hyzcr); $('#psjgfzr').textbox('setValue', psyjs["t"][0].psjgfzr); $('#pszjzzz').textbox().textbox('setValue', psyjs["t"][0].pszjzzz); $('#pszjzcy').textbox().textbox('setValue', psyjs["t"][0].pszjzcy); $('#psyjszbr').textbox().textbox('setValue', psyjs["t"][0].zbr); $('#sbrq').textbox().textbox('setValue', psyjs["t"][0].sbrq); $('#hyrq01').textbox().textbox('setValue', psyjs["t"][0].hyrq_start); $('#hyrq02').textbox().textbox('setValue', psyjs["t"][0].hyrq_end); $('#pshydz').textbox().textbox('setValue', psyjs["t"][0].pshydz); $('#wzjtdl').textbox('setValue', psyjs["t"][0].wzjtdl); $('#dlgk').textbox('setValue', psyjs["t"][0].dlgk); $('#ccjbtz').textbox('setValue', psyjs["t"][0].ccjbtz); $('#yctz').textbox('setValue', psyjs["t"][0].yctz); $('#gbskczy').textbox('setValue', psyjs["t"][0].gbskczy); $('#ywktgz').textbox('setValue', psyjs["t"][0].ywktgz); $('#ytkfly').textbox('setValue', psyjs["t"][0].ytkfly); $('#plytyyxx').textbox('setValue', psyjs["t"][0].plytyyxx); $('#sthjbhqmc').textbox('setValue', psyjs["t"][0].sthjbhqmc); $('#ktgz_dz').textbox('setValue', psyjs["t"][0].ktgz_dz); $('#ktgz_zj').textbox('setValue', psyjs["t"][0].ktgz_zj); $('#ktgz_cj').textbox('setValue', psyjs["t"][0].ktgz_cj); $('#ktgz_cs').textbox('setValue', psyjs["t"][0].ktgz_cs); $('#ktgz_fxhy').textbox('setValue', psyjs["t"][0].ktgz_fxhy); $('#ktgz_yfhsqxb').textbox('setValue', psyjs["t"][0].ktgz_yfhsqxb); $('#cljsjzrq').textbox('setValue', psyjs["t"][0].cljsjzrq); $('#dzcljsff').textbox('setValue', psyjs["t"][0].dzcljsff); $('#id_clqsbz_y').textbox('setValue', psyjs["t"][0].clqsbz_y); $('#id_clqsbz_q').textbox('setValue', psyjs["t"][0].clqsbz_q); $('#xzclmc').textbox('setValue', psyjs["t"][0].xzclmc); $('#kqlb').textbox('setValue', psyjs["t"][0].kqlb); $('#clztjd').textbox('setValue', psyjs["t"][0].clztjd); $('#jsdyhf').textbox('setValue', psyjs["t"][0].jsdyhf); $('#hymjqd').textbox('setValue', psyjs["t"][0].hymjqd); $('#yxhd').textbox('setValue', psyjs["t"][0].yxhd); $('#yxkxd').textbox('setValue', psyjs["t"][0].yxkxd); $('#yshybhd').textbox('setValue', psyjs["t"][0].yshybhd); $('#dmyymd_ysyytjxshqyb').textbox('setValue', psyjs["t"][0].dmyymd_ysyytjxshqyb); $('#jskccl').textbox('setValue', psyjs["t"][0].jskccl); $('#jjkccl').textbox('setValue', psyjs["t"][0].jjkccl); $('#dzclbhyyfx').textbox('setValue', psyjs["t"][0].dzclbhyyfx); $('#kcclbhyyfx').textbox('setValue', psyjs["t"][0].kcclbhyyfx); $('#ytlx').textbox('setValue', psyjs["t"][0].dc_ytlx); $('#dc_rq01').textbox('setValue', psyjs["t"][0].dc_rq_start); $('#dc_rq01').textbox('setValue', psyjs["t"][0].dc_rq_end); $('#dc_zz').textbox('setValue', psyjs["t"][0].dc_zz); $('#dc_cy').textbox('setValue', psyjs["t"][0].dc_cy); $('#dc_xc').textbox('setValue', psyjs["t"][0].dc_xc); if ('setValue', psyjs["t"][0].pszyj != "") { $("#sbq").textbox("disable"); $("#sbcl").textbox("disable"); $("#psz_yj").textbox("enable"); $("input[type='radio'][name='zypsyj']").get(1).checked = true; $('#psz_yj').textbox('setValue', psyjs["t"][0].pszyj); } else { $("#sbq").textbox("enable"); $("#sbcl").textbox("enable"); $("#psz_yj").textbox("disable"); $("input[type='radio'][name='zypsyj']").get(0).checked = true; $('#sbq').textbox('setValue', psyjs["t"][0].sbq); $('#sbcl').textbox('setValue', psyjs["t"][0].sbcl); } $('#zycl').textbox('setValue', psyjs["t"][0].zycl); $('#fj_kyqxkz_jb').textbox('setValue', psyjs["t"][0].kyqjb); $('#fj_hy_jb').textbox('setValue', psyjs["t"][0].hyjb); } }); } }); //主要评审意见禁用文本框 $("input[name=zypsyj]").click(function(){ var val = $(this).val(); if (val == 0) { $("#sbq").textbox("enable"); $("#sbcl").textbox("enable"); $("#psz_yj").textbox("disable"); } else { $("#sbq").textbox("disable"); $("#sbcl").textbox("disable"); $("#psz_yj").textbox("enable"); } }); function OpenAddZjzcy(e) { if (e == 0) { $('#div_addCY01').dialog('open').dialog('center').dialog('setTitle', '新增'); $('#fm1').form('clear'); } else { $('#div_addCY02').dialog('open').dialog('center').dialog('setTitle', '新增'); $('#fm2').form('clear'); } } function AddZjzcy(e) { if (e == 0) { $.ajax({ url: "SaveExpert.ashx", data: $.param({ 'load': '1' }) + '&' + $("#fm1").serialize(), type: 'post', success: function (data) { if (data != "" && data != null) { if (data != "ok") { alert(data); } else { alert("新增成功"); $('#div_addCY01').dialog('close'); GetOption(); } } else { alert("新增失败"); } } }); } else { $.ajax({ url: "SaveExpert.ashx", data: $.param({ 'load': '2' }) + '&' + $("#fm2").serialize(), type: 'post', success: function (data) { if (data != "" && data != null) { alert("新增成功"); $('#div_addCY02').dialog('close'); GetOption(); } else { alert("新增失败"); } } }); } } //隐藏显示DIV //新增储量类型 $("#cllx").combobox({ onSelect: function (record) { if (record.text != (">>>请选择<<<")) { if (record.text.indexOf("新增")) { $("#ktgz_yfhsqxb").textbox("enable"); $("#dzclbhyyfx").textbox("enable"); $("#kcclbhyyfx").textbox("enable"); } else { $("#ktgz_yfhsqxb").textbox("disable"); $("#dzclbhyyfx").textbox("disable"); $("#kcclbhyyfx").textbox("disable"); } } var str01 = "前相比,新增的工作量如下:"; var str02 = "储量变化原因分析" if (record.text == "复算") { $("#div_top_id_xzgzl").html("(6)与复算" + str01); $("#div_top_id_clbhyyfx").html("10.复算" + str02); } else if (record.text == "核算") { $("#div_top_id_xzgzl").html("(6)与核算" + str01); $("#div_top_id_clbhyyfx").html("10.核算" + str02); } else if (record.text == "复算、核算") { $("#div_top_id_xzgzl").html("(6)与复算、核算" + str01); $("#div_top_id_clbhyyfx").html("10.复算、核算" + str02); } else { $("#div_top_id_xzgzl").html("(6)新增报告没有,复核算报告才有"); $("#div_top_id_clbhyyfx").html("10.新增报告没有,复核算报告才有"); } } }) //调查 $("#ytlx").combobox({ onSelect: function (record) { //储量变化原因分析,修改值 if (record.text == "中型") { $("#dc_rq01").textbox("disable"); $("#dc_rq02").textbox("disable"); $("#dc_cy").textbox("disable"); $("#dc_zz").textbox("disable"); $("#dc_xc").textbox("disable"); } if (record.text == "大型") { $("#dc_rq01").textbox("enable"); $("#dc_rq02").textbox("enable"); $("#dc_zz").textbox("enable"); $("#dc_cy").textbox("enable"); $("#dc_xc").textbox("enable"); } } }) //生态环境保护区名称 $("#sthjbhq").combobox({ onSelect: function (record) { if (record.text == "有") {$("#div_id_sthjbhqmc").attr("style", "display:block;");} if (record.text == "无") {$("#div_id_sthjbhqmc").attr("style", "display:none;");} } }) //产量起算标准 //$("#id_clqsbz").combobox({ // onSelect: function (record) { // if (record.text == "单井油产量") { // $("#div_clqsbz_q").attr("style", "display:none;"); // $("#div_clqsbz_y").attr("style", "display:block;"); // } // if (record.text == "单井气产量") { // $("#div_clqsbz_y").attr("style", "display:none;"); // $("#div_clqsbz_q").attr("style", "display:block;"); // } // } //}) //保存word function saveDoc() { //回显数据修改后保存 if (load == "3") { document.getElementById('xzcy').value = pszjzxzcy; document.getElementById('xzzbr').value = psyjsxzzbr; //表单校验 if (!$('#fm').form('enableValidation').form('validate')) { return $(this).form('enableValidation').form('validate'); } else { $.messager.confirm('提示框', '提交后信息无法更改!您确认要提交吗?', function (ok) { if (ok) { SBC();//转换全角,序列化对象在提交时英文会报错 GetOptionsAndVoluation();//获取下拉框索引并赋值,使后台获取 //后台调取数据 $.ajax({ url: "ExportWord.ashx", data: $.param({ 'ytdm': getQueryString('ytdm'), 'nd': getQueryString('nd'), 'load': '4', 'tbr': getQueryString('tbr'), 'uuid': uuid, 'kyqNumCount': kyqNumCount, "kyqlxmc": kyqlxmc }) + '&' + $("#fm").serialize(), type: 'post', success: function (resultData) { alert(resultData); document.getElementById("btn_export_doc").href = 'CreatePsyjs.aspx?load=2&uuid=' + uuid; } }); } else { return $('#fm').form('validate'); } } ) } } else { uuid = guid(12, 16); document.getElementById('xzcy').value = pszjzxzcy; document.getElementById('xzzbr').value = psyjsxzzbr; //转换全角,序列化对象在提交时英文会报错 SBC(); //获取下拉框索引并赋值,使后台获取 GetOptionsAndVoluation(); //表单校验 if (!$('#fm').form('enableValidation').form('validate')) { return $(this).form('enableValidation').form('validate'); } else { $.messager.confirm('提示框', '提交后信息无法更改!您确认要提交吗?', function (ok) { if (ok) { //后台调取数据 $.ajax({ url: "ExportWord.ashx", data: $.param({ 'ytdm': getQueryString('ytdm'), 'tbr': getQueryString('tbr'),'uuid': uuid , 'kyqNumCount': kyqNumCount, "kyqlxmc": kyqlxmc}) + '&' + $("#fm").serialize(), type: 'post', success: function (resultData) { alert(resultData); document.getElementById("btn_export_doc").href = 'CreatePsyjs.aspx?load=2&uuid=' + uuid; } }); } else { return $('#fm').form('validate'); } } ) } } } function exportDoc() { if (uuid == null) { alert("请先保存数据!"); } } function guid(len, radix) { //len 长度 radix 基数 例:uuid(8, 16) // "098F4D35" var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); var uuid = [], i; radix = radix || chars.length; if (len) { for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix]; } else { var r; uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; uuid[14] = '4'; for (i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | Math.random()*16; uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; } } } return uuid.join(''); } function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = location.search.substr(1).match(reg); if (r != null) return unescape(decodeURI(r[2])); return null; } function SBC() { ToSBC("wzjtdl"); ToSBC("dlgk"); ToSBC("ccjbtz"); ToSBC("yctz"); ToSBC("gbskczy"); ToSBC("ywktgz"); ToSBC("ytkfly"); ToSBC("plytyyxx"); ToSBC("ktgz_dz"); ToSBC("ktgz_zj"); ToSBC("ktgz_cj"); ToSBC("ktgz_cs"); ToSBC("ktgz_fxhy"); ToSBC("ktgz_yfhsqxb"); if ($("#ktgz_yfhsqxb").val() != "") { ToSBC("ktgz_yfhsqxb"); } if ($("#dzclbhyyfx").val() != "") { ToSBC("dzclbhyyfx"); } if ($("kcclbhyyfx").val() != "") { ToSBC("kcclbhyyfx"); } ToSBC("clztjd"); ToSBC("jsdyhf"); ToSBC("hymjqd"); ToSBC("yxhd"); ToSBC("yxkxd"); ToSBC("yshybhd"); ToSBC("dmyymd_ysyytjxshqyb"); ToSBC("jskccl"); ToSBC("jjkccl"); ToSBC("dc_xc"); ToSBC("dc_cy"); ToSBC("sbq"); ToSBC("sbcl"); ToSBC("psz_yj"); ToSBC("zycl"); } function ToSBC(txtstring) { var text = $("#" + txtstring + "").val(); var tmp = text; for (var i = 0; i < text.length; i++) { if (text.charAt(i) == "³") { alert("可以"); } if (!/^[\x00-\xff]*$/.test(text.charAt(i))) { if (text.charCodeAt(i) == 32) { tmp = ""; tmp = tmp + String.fromCharCode(12288); } if (text.charCodeAt(i) < 127 ) { //&& text.charCodeAt(i) != 109 tmp = ""; tmp = tmp + String.fromCharCode(text.charCodeAt(i) + 65248); } } } $("#" + txtstring + "").textbox("setValue", tmp); } function GetOptionsAndVoluation() { document.getElementById('bgmc_text01').value = $("#bgmc").val().split("油田")[0]; document.getElementById('bgmc_text02').value = $("#bgmc").val().split("油田")[1]; document.getElementById('pszjzzz_text').value = $("#pszjzzz").combobox("getText"); document.getElementById('pszjzcy_text').value = $("#pszjzcy").combobox("getText"); document.getElementById('cllx_text').value = $("#cllx").combobox("getText"); document.getElementById('yqlb_text').value = $("#id_yqlb").combobox("getText"); document.getElementById('sbdw_text').value = $("#sbdw").combobox("getText"); document.getElementById('psyjszbr_text').value = $("#psyjszbr").combobox("getText"); document.getElementById('bxdw_text').value = $("#bxdw").combobox("getText"); //document.getElementById('id_clqsbz_text').value = $("#id_clqsbz").combobox("getText");可以删除, document.getElementById('id_clqsbz_y_text').value = $("#id_clqsbz_y").combobox("getText"); document.getElementById('id_clqsbz_q_text').value = $("#id_clqsbz_q").combobox("getText"); document.getElementById('dzcljsff_text').value = $("#dzcljsff").combobox("getText"); document.getElementById('hy_text').value = $("#hy").combobox("getText"); document.getElementById('pshydz_text').value = $("#pshydz").combobox("getText"); document.getElementById('ytlx_text').value = $("#ytlx").combobox("getText"); } function GetOption() { $("#pszjzzz").empty(); $("#pszjzcy").empty(); $("#psyjszbr").empty(); //获取评审专家组成员值 下拉框展示 $.ajax({ url: "GetOption.ashx", type: "POST", dataType: "json", data: {"load":"1"}, success: function (data) { if (data != "" && data != null) { for (var i = 0; i < data.length; i++) { $("#pszjzzz").append("<option value='" + i + "'>" + data[i] + "</option>"); $("#pszjzzz").combobox({}); $("#pszjzcy").append("<option value='" + i + "'>" + data[i] + "</option>"); $("#pszjzcy").combobox({}); } } }, fail: function (status) { // 此处放失败后执行的代码 alert(err.statusText) } }); //获取评审意见书执笔人 下拉框展示 $.ajax({ url: "GetOption.ashx", type: "POST", dataType: "json", data: {"load":"2"}, success: function (data) { if (data != "" && data != null) { for (var i = 0; i < data.length; i++) { $("#psyjszbr").append("<option value='" + i + "'>" + data[i] + "</option>"); $("#psyjszbr").combobox({}); } } }, fail: function (status) { // 此处放失败后执行的代码 alert(err.statusText) } }); } </script> </body> </html> ```
使用easyui做的表格,在选完每页显示行数后,再点击提交,接收到的rows为NAN怎么解决?
先上图: ![图片说明](https://img-ask.csdn.net/upload/201703/08/1488960825_290618.png) 如上图,左边是用easyui做的表格,有查询和分页。点击任一行,会把明细添加到右边供编辑。翻页没问题,选择每页显示行数也没问题。但是当我选择完每页显示的行数以后,再次修改或者新增,后台接受的rows(每页显示行数)就变成了NaN。请问各位老师怎么解决? html: ``` <body> <div style="float:left" > <table id="list_data_message" title="信息管理" style="width:600px;height:500px" ></table> </div> <div style="float:right" > <div class="easyui-panel" title="信息编辑" style="width:720px;padding:30px 60px;"> <div style="float:left" > <div id="uguid" style="display:none;"></div> <div style="margin-bottom:20px"> 标题: <input id="title" name="title" class="easyui-textbox" style="width:150px;height:32px"> </div> <div style="margin-bottom:20px"> 信息类别: <select id="typeCode" name="typeCode" class="easyui-combobox" > <option value='0F31F432-0DFE-413C-A872-429BEA9F8E26' selected="selected">流行趋势</option> <option value='586E0485-C919-4B81-963F-5A3981E2FE2A'>推广引导</option> <option value='5BC62E88-E9D5-4A08-B086-6B0F41336D87'>行业信息</option> </select> </div> <div style="margin-bottom:20px;"> <div>封面:</div> <textarea id="cover" id="cover" name="cover" cols="100" rows="8" style="visibility:hidden;"> </textarea> </div> <div> <button id="isok" name="isok" class="easyui-linkbutton" iconCls="icon-ok" style="width:150px;height:32px" onclick="messageManager.submit(1)" >发布信息</button> </div> <div> <button id="ispre" name="ispre"class="easyui-linkbutton" iconCls="icon-save" style="width:150px;height:32px" onclick="messageManager.submit(0)" >保存草稿</button> </div> </div> <div style="float:right"> <textarea id="content" name="content" cols="100" rows="8" style="visibility:hidden;"> </textarea> </div> </div> </div> <script type="text/javascript"> messageManager.initTextarea(); messageManager.init(); </script> </body> ``` js文件: ``` //加载表格数据 loadMessage :function(){ var Searchtitle = $("#Searchtitle").val(); $('#list_data_message').datagrid({ title: '信息管理', iconCls: 'icon-save', //图标 loadMsg: "数据加载中,请稍后......", striped: true,//设置为true交替显示行背景 autoRowHeight: false,//设置为false锁定行高 nowap: true, //列内容多时自动折至第二行 striped: true,//行背景交换 border: true, collapsible: false, //是否可折叠 fit: false, //自动大小 datagrid自适应宽度 fitColumn: false, //列自适应宽度 url: '/api/message/index?Searchtitle='+Searchtitle, remoteSort: false, singleSelect: true, //是否单选 pagination: true, //分页控件 rownumbers: true, //行号 loading: true, showPageList: true,//定义是否显示页面导航列表。 showRefresh: true,//定义是否显示刷新按钮, idField: 'uGUID', //主键 selectOnCheck:false, checkOnSelect:false, pageNumber: 1, //默认显示第几页 pageSize: 10, pageList: [5, 10, 15],//用户可以改变页面大小。pageList属性定义了页面导航展示的页码。 //可编辑单元格 //onClickCell: onClickCell, columns: [[//显示的列 //{ field: 'ck', title: '编号', checkbox: true, align: 'left', sortable: true }, { field: 'uGUID',title: '编号',hidden:true }, { field: 'informationTypeGUID',title: '类型编号',hidden:true }, { field: 'title', title: '标题', align: 'left',width:200}, { field: 'coverPhoto', title: '封面', align: 'left',width:200,hidden:true}, { field: 'informationTypeName', title: '信息类型', align: 'left',width:200}, { field: 'status', title: '状态', align: 'left',width:60}, { field: 'content', title: '内容', align: 'left',width:200,hidden:true}, ]], onClickRow : function(index, row){ //你要写的逻辑 var row = $('#list_data_message').datagrid('getSelected'); if (row){ $('#title').textbox('setValue',row.title); $('#uguid').val(row.uGUID); if(row.informationTypeGUID!=''||row.informationTypeGUID!=null){ $("#typeCode").combobox('select',row.informationTypeGUID); } //$("#typeCode").val(row.informationTypeGUID); kcover.html(row.coverPhoto); kcontent.html(row.content); } }, toolbar: [{ id: 'BtnAddUserInfo', text: '新增', iconCls: 'icon-add', handler: function () { messageManager.refresh(); } }, '-', { id: '', text: '删除', iconCls: 'icon-remove', handler: function () { var guid = $('#list_data_message').datagrid('getSelected').uGUID; var data={}; data.guid=guid; $.ajax({ type : 'POST', url : '/api/message/delete', dataType:"json", contentType:'application/json;charset=UTF-8', data : JSON.stringify(data), success : function(){ messageManager.loadMessage(); }, error: function(XMLHttpRequest){ alert( "删除失败: " + XMLHttpRequest.responseText); } }); } }, '-', { //查询输入框 text: '<input type="text" id="Searchtitle" placeholder="输入信息标题"/>', }, '-', { id: '', text: '查询', iconCls: 'icon-search', handler: function () { messageManager.loadMessage(); } }, ], }); //分页控件 var p = $('#list_data_message').datagrid('getPager'); $(p).pagination({ //pageNumber: 1, //默认显示第几页 //pageSize: 10, //pageList: [5, 10, 15],//用户可以改变页面大小。pageList属性定义了页面导航展示的页码。 beforePageText: '第', afterPageText: '页 共{pages}页', displayMsg: '当前显示{from}-{to}条记录 共{total}条记录', /*onBeforeRefresh:function(){ alert('before refresh'); //刷新 },*/ /*onSelectPage:function(pageNumber,pageSize){ alert(pageNumber);//翻页 a*/ buttons: [{ iconCls: 'icon-add', handler: function () { alert('add') } }, '-', { iconCls: 'icon-save', handler: function () { alert('save') } }, '-', { iconCls: 'icon-cut', handler: function () { alert('AAAA') } } ] }); }, ``` java代码(springboot) ``` /** * 显示所有信息管理的信息 * @param req * @param model * @return */ @RequestMapping(value="/index") public Map<String, Object> findAllMessage(HttpServletRequest req){ String Searchtitle = req.getParameter("Searchtitle"); if(Searchtitle==null||Searchtitle.equals("undefined")){ Searchtitle=""; } Searchtitle = "%"+Searchtitle+"%"; Integer page = Integer.parseInt(req.getParameter("page")); Integer rows = Integer.parseInt(req.getParameter("rows")); List<Map<String, String>> informations = messageService.findAllInformationRelease(Searchtitle,page,rows); int total = messageService.findCountInformationRelease(Searchtitle); Map<String, Object> json = new HashMap<>(); json.put("total", total); json.put("rows", informations); String jsonarray = JSONArray.toJSONString(informations); return json; } /** * 添加或修改一条信息 * @param informationRelease * @return */ @RequestMapping(value="/save") public FerryInfo saveMessage(@RequestBody InformationRelease informationRelease){ FerryInfo ferryInfo = new FerryInfo(); if(informationRelease.getuGUID()==null||"".equals(informationRelease.getuGUID())){ informationRelease.setuGUID(UUID.randomUUID().toString()); informationRelease.setCreator("test");//TODO informationRelease.setCreateTime(new Date()); }else{ InformationRelease info = informationReleaseDao.findOne(informationRelease.getuGUID()); informationRelease.setCreator(info.getCreator()); informationRelease.setCreateTime(info.getCreateTime()); } informationRelease.setUpdateMan("test");//TODO informationRelease.setUdpateTime(new Date()); informationRelease.setUsable(1); if(informationRelease.getStatus()==1){ informationRelease.setLssueMan("test");//TODO informationRelease.setLssueTime(new Date()); } informationReleaseDao.save(informationRelease); return ferryInfo; } ```
在springmvc和mybatis框架下根据id批量删除
jsp页面代码: ``` <input type="checkbox" id="subcheck" name="subcheck" class="checkboxes" value="${teacher.id}" /> ``` js代码: ``` function batchDeletes(){ var checkedNum = $("input[name = 'subcheck']:checked").length; if(checkedNum == 0) { alert("请至少选中一项!"); return false; } if(confirm("确定删除所选项目?")){ var checkedList = new Array(); $("input[name = 'subcheck']:checked").each(function (){ checkedList.push($(this).val()); }); $.ajax({ type: "POST", url: "rest/teacher/batchDeletes.action", data: {"ids": checkedList.toString()}, datatype: "html", success: function (data) { $("[name=‘checkbox‘]:checkbox").attr("checked", false); art.dialog.tips('删除成功!'); setTimeout("location.reload()", 1000);//页面刷新 }, error:function(data){ art.dialog.tips('删除失败!'); } }); } } ``` controller代码: ``` @RequestMapping("/batchDeletes") public void batchDeletes(HttpServletRequest request){ System.out.println(1); String items = request.getParameter("ids"); List<String> delList = new ArrayList<String>(); String[] strs = items.split(","); System.out.println(2); for (String str : strs) { delList.add(str); } basicTeacherService.batchDeletes(delList); } ``` mapper.xml页面代码: ``` <delete id="batchDeletes" parameterType="java.lang.Long"> delete from basic_teacher where id in <foreach collection="list" index="index" item="id" open="(" separator="," close=")"> #{id} </foreach> </delete> ``` 麻烦各路大神给看看到底是哪里出了问题哈,谢谢
jquery的click事件多次绑定
**.tools-comment是评论按钮的class名,点击它弹出回复评论层。添加回复内容,点发表,发表成功,将返回的数据写入页面中。此时不刷新页面,再次点击评论,发表,则一下发表了两条相同的数据,ajax请求了两次。第三次则发表三条......第N次发表N条。.editWindow-send就是弹出层上面的发表按钮的class名,代码如下,请大神帮看看是什么原因。** var topicid,artsid,articleid; $("#found").on("click",".tools-comment",function (){ //跳转评论 var tempHtml=''; var url="index.php?app=weixin&ac=wnote&ts=verifyUser"; $.ajax({ url:url, type:"get", async:false, datatype:"json", success:function(data) { var data=$.parseJSON(data); if(data.code==1) showEditWindow(); if(data.code==0) popWindowAlert(data.msg); if(data.code==4) location.href=data.ts_url; if(data.code==5) location.href=data.ts_url; } }); //这里需要记录当前点击是哪个话题 articleid=$(this).children(".docomment").attr("articleid"); artsid=$(this).children(".docomment").attr("artsid"); topicid=$(this).children(".docomment").attr("topicid"); if(articleid){ var url="index.php?app=weixin&ac=wnote&ts=addArticleComment"; $(".editWindow-send").on("click",function (){ var content=$("#ComentContent").val(); $.ajax({ url:url, type:"post", datatype:"json", async:false, data:{"articleid":articleid,"content":content}, success:function(data){ var data=$.parseJSON(data); //执行登陆跳转 if (data.status==800) { popWindowAlert(data.msg); } //执行成功返回跳转 if(data.status==1){ var htmlStr="<li class='reply-again' id="+data['res']['commentid']+" comment_id="+data['res']['commentid']+"><div class='ku_replyp delcomment' id="+data['res']['commentid']+" to_userid="+data['res']['commentid']+" comment_id="+data['res']['commentid']+"><div class='reply-photo'><a href='index.php?app=weixin&ac=wcircleZone&userid="+data['res']['userid']+"' class='ui-link'><img src='"+data['res']['face']+"'></a></div><div class='ku_replyp_text'>"+data['res']['username']+":</div> <div class='ku_replyp_con'>"+data['res']['content']+"</div></div><div class='reply-time'><div class='reply-time-l'>"+data['res']['addtime']+"</div> <div class='reply-time-r'> <ul><li class='glm-love'><i></i><span class='likenum'></span></li> <li class='glm-line'>|</li> <li class='comment-reply' to_comment_id='300' comment_id='300'><i></i></li> </ul></div> </div> <div class='reply-box-all'> </div><div class='clear'></div> <div class='br10'></div></li>"; $(".gl-replay-list").append(htmlStr); }else{ //执行失败 popWindowAlert(data.msg); } } }); }); } });
jsTree的问题,请大神指点。
我的jsp代码 <div id="treeDiv"></div> js代码 $(function _tree() { $.ajaxSetup({cache:false});//缓存区清理 $("#treeDiv") .bind("select_node.jstree", function(event, data){ if($("#treeDiv").jstree("is_closed")) { $("#treeDiv").jstree("open_node"); } else { $("#treeDiv").jstree("close_node"); } }) .jstree({ "xml_data" : { "ajax" : { "url" : 'url', "error" : function(){ $("#treeDiv").html( "<p style='color:red;width:100%;text-align:center;'>" + "初始化失败,<br/>请刷新重试..." + "<p/>" ); } }, "xsl" : "flat" }, "plugins" : [ "themes","ui", "xml_data"] }) }); 后台查出来的数据在控制台的: <?xml version="1.0" encoding="utf-8"?> <root> <item state="open" parent_id="0" id="root"> <content> <name href="javascript:" style="font-weight:bold;"><![CDATA[外系统资源]]></name> </content> </item> </root> 也就是说,只有一个根节点。所以前面页面呈现下图:![CSDN移动问答][1] ![CSDN移动问答][2] 但是当我点击那个‘-’号的时候,就会出现下面的情况: ![CSDN移动问答][3] [1]: http://my.csdn.net/my/album/detail/1722129#1722129 [2]: http://img.my.csdn.net/uploads/201312/03/1386065189_1603.jpg [3]: http://img.my.csdn.net/uploads/201312/03/1386065311_8053.jpg 它会无线循环下去,我的初步想法是去掉那个虚线的图标,或者在虚线那个“+”和“-”上加个控制事件,但是,这个办法行不通,首先这个符号是个ins,和下面展开的ins用个同一个class,试了不少办法,JSTREE的API也不全,所以没办法了。求助大神指点。
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
进程通信方式总结与盘点
​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只可操作少量的...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://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) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
入职阿里5年,他如何破解“技术债”?
简介: 作者 | 都铎 作为一名技术人,你常常会听到这样的话: “先快速上线” “没时间改” “再缓一缓吧” “以后再解决” “先用临时方案处理” …… 当你埋下的坑越来越多,不知道哪天哪位同学就会踩上一颗雷。特别赞同“人最大的恐惧就是未知,当技术债可说不可见的时候,才是最让人不想解决的时候。” 作为一个程序员,我们反对复制粘贴,但是我们经常会见到相似的代码,相同的二方包,甚至整个代码...
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那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:【程序员管小亮】 专栏——深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
你也能看懂的:蒙特卡罗方法
蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或...
相关热词 c# 时间比天数 c# oracle查询 c# 主动推送 事件 c# java 属性 c# 控制台 窗体 c# 静态类存值 c#矢量作图 c#窗体调用外部程式 c# enum是否合法 c# 如何卸载引用
立即提问