用ajax验证用户存在,为什么return true,方法没有结束,还在往下执行??

function isExit(){

var value = $('#testDept').val();   

if(value!=""){
    $.ajax({
        url:"deptIsExit",
        type:"post",
        data:{"deptValue":value},
        success:function(data){
            $('#message').html(data.result.message);
            if(data.result.isExit){
                return true;
            }
        }
    });
}else {
    $('#message').html("不能为空!");
    return false;
}

}

function checkit(){

if(isExit()){
    return true;
}

return false;

}

这个是个form表单,里面的onsubmit,ajax已经传递值,并且比较也正确,正常应该return true,方法就结束了,但是,往下执行了return false。导致我表单一直提交不了!!!这里本人确定值传递进去,并且比较完毕,返回的也是true!!但就是,方法没结束,怎么回事????调试结果是直接全部都执行了!没有跳过中间的return true!!!

2个回答

 $.ajax({
        url:"deptIsExit",
        type:"post",
                async: false,//设置fale表示ajax同步执行,如果是异步,则success没有执行前就会执行ajax后面的代码
        data:{"deptValue":value},
        success:function(data){
            $('#message').html(data.result.message);
            if(data.result.isExit){
                return true;
            }
        }
    });
danielinbiti
danielinbiti 回复Equal_: var flag = false;//加变量返回 if(value!=""){ $.ajax({ url:"deptIsExit", type:"post", data:{"deptValue":value}, success:function(data){ $('#message').html(data.result.message); if(data.result.isExit){ flag= true; } } }); }else { $('#message').html("不能为空!"); } return flag;
接近 5 年之前 回复
Equal_
Equal_ 我改了,但是还是不行,怎么会回事??????????
接近 5 年之前 回复
Equal_
Equal_ 这个我还真是第一次知道!!!我的好多问题都是你回答的啊!看来我每天都在进步,每天一点点。
接近 5 年之前 回复

你的isExit是ajax异步的 你直接if(isExit()){}当然会有问题,因为异步方法不会阻塞,不应该同步调用,正确做法应该是在success里做你需要处理的事情 而不是单独调用。

Equal_
Equal_ 我没听懂你的意思,我现在要的结果是根据ajax返回的信号,确定submit是否提交表单!!!该怎么做???
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ajax验证用户名是否存在,失败后组阻止表单提交
各位大神,求助: 我先是定义了一个变量,在ajax处理完返回值时,根据ajax返回的结果,改变flag的值(初始值定义为false)可是就算是用户名通过验证可以使用,我把flag的改为true,然后return flag 但是没用 提交表单的时候flag的值还是一直是false 各位,帮帮忙 拜托了 (图片是代码)
使用jquery ajax判断用户名是否存在后,如果做表单提交?
各位大神好,我还没有学query,但在做练习的时候,需要判断用户名是否存在,于是尝试使用了下$.get()方法来获取action返回值。 用以下代码,我能正确获取到action的返回值。在使用返回值做判断也都是正常的,**但是在表单提交的时候**,无法正常的return,执行if的顺序也很奇怪 代码: ```javascript //检查用户名:不能为空,且不能重复 function checkUsername() { var username = document.getElementById("username").value; var username_message = document.getElementById("username_message"); username_message.style.fontSize = "12px"; //只需要判断是否为空,输入了内容会进行用户名存在的校验 if (username == "" || username.length == 0) { username_message.style.color = "red"; username_message.innerHTML = "请输入用户名"; return false; } //如果用户输入了内容,那么使用ajax验证用户名是否已存在 else{ var actionMessage; // ajax获取到action的查询结果 $.get("user_checkUsername.action?"+new Date().getTime(),{'username':username}, function(data){ alert("in ajax data is: "+data); actionMessage = data; alert("in ajax actionMessage is: "+actionMessage); //本来是在这里面完成判断的,发现有问题后提取出去,问题还是在 }); if(actionMessage=="exist"){ alert("if exist, actionMessage is: "+actionMessage); username_message.style.color = "red"; username_message.innerHTML = "用户名已存在"; return false; } else if(actionMessage=="ok") { alert("if ok, actionMessage is: "+actionMessage); username_message.style.color = "green"; username_message.innerHTML = "用户名可以使用"; return true; } else{ alert("if neither, actionMessage is: "+ actionMessage); return false; } } } ``` onblur失焦时会调用一次这个方法,然后提交表单时,也会调用一次。 问题:data的值是没问题的,不管失焦还是提交表单,alert的弹出顺序都是: if neither, actionMessage is: undefined in ajax data is: exist in ajax actionMessage is: exist 然后就结束了。 请问为什么会出现这种现象?if else的顺序难道不是应该从上到下吗?况且执行完了第一个alert,alert("if neither, actionMessage is: "+ actionMessage);后的return貌似没有执行? 在线跪求答案。
JSp+ajax用户登录验证
[img]http://dl2.iteye.com/upload/attachment/0088/2001/4ee085e5-47e0-3995-ad42-62e4a53cfc2f.png[/img] 用户登陆界面,想要实现输入账号之后离开输入框就验证该账号是否存在,输入角色、账号、密码之后,点击登录,如果正确就跳转到index.jsp,错误不跳转并且在密码输入框下显示提示信息;有一个没输入就提示,信息也是在密码输入框下。 我现在的问题是:若果什么也不输,点击登录,会闪一下,但闪过之后就是重置了页面。输入正确也是闪一下就重置页面.账号验证没问题,就是登录有问题,但是搞不定,大侠们看看吧! login.jsp [code="java"]<form id="form" name="form" method="post" action="" > <table border="0"> <tr> <td align="right">角色类型:</td> <td><select name="role" id="role" onBlur="checkRole(this)"> <option value="0">-请选择角色-</option> <% List<Role> list = new ArrayList<Role>(); RoleDao dao = new RoleDaoImpl(); list = dao.findAllRoles();//调用实现类的查询全部方法 for (int i = 0; i < list.size(); i++) { Role r = list.get(i); %> <option value="<%=r.getR_id()%>"><%=r.getR_name()%></option> <% } %> </select> </td> <td align="left"> &nbsp; <span id="roleSpan"></span> </td> </tr> <tr> <td align="right">账号:</td> <td> <input type="text" name="number" id="number" onblur="checkNumber(this)"> </td> <td width="256" align="left"> &nbsp; <span id="numberSpan"></span> </td> </tr><!-- 当输入名字后离开输入框即调用--> <tr> <td align="right">密码:</td> <td><input type="password" name="pwd" id="pwd" onBlur="checkPsw(this)" > </td> <td align="left"> &nbsp; <span id="pwdSpan"></span> </td> </tr> <tr> <td align="left">&nbsp;<span id="feedback_info"></span></td> </tr> <tr> <td colspan="1"> <input type="submit" value="登录" onclick="checkLogin(this.form)"/> <input type="button" value="注册" onclick="javascript:window.location.href='User/Register.jsp'"></td> </tr> </table> </form>[/code] login.js [code="java"]var xmlHttp; function createXMLHttpRequest() { if (window.XMLHttpRequest) { var xmlHttp = new XMLHttpRequest(); //mozilla浏览器 } else if (window.ActiveXObject) { try { var xmlHttp = new ActiveX0bject("Msxml2.XMLHTTP"); //IE老版本 } catch (e) { } try { var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE新版本 } catch (e) { } } if (!xmlHttp) { window.alert("不能创建XMLHttpRequest对象实例"); return false; } else return xmlHttp; ////}///////花括号放错地方 } // 检查账号,给出提示信息 function checkNumber(Number) { var numberSpan = document.getElementById("numberSpan"); if (Number.value == "") { numberSpan.innerHTML = "账号必须填写".fontcolor("red"); return false; } else { xmlHttp = createXMLHttpRequest(); //createXMLHttpRequest申明的是局部变量,这里访问不到xmlHttp,要给xmlHttp变量赋值才行 var url="servlet/CheckNumberServlet?number="+Number.value+"&LoginTime="+new Date().getTime(); url = encodeURI(url); //转换码后再传输 xmlHttp.open("GET",url,true);//加时间戳防止IE缓存 //xmlhttp.setRequestHeader( "Content-Type", "text/html;charset=UTF-8" ); xmlHttp.onreadystatechange = handleStateChange1; xmlHttp.send(null); return true; } } function handleStateChange1() { var numberSpan = document.getElementById("numberSpan"); if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { // alert("来自服务器的响应:"+xmlHttp.responseText); if (xmlHttp.responseText == 'true') {///////responseText是字符串,不能和boolean变量直接比较 // alert("存在"); numberSpan.innerHTML = "<img src='Img/g.gif'>"; document.getElementById("feedback_info").innerHTML=""; return true; } else if (xmlHttp.responseText == 'false') {///////responseText是字符串,不能和boolean变量直接比较 // alert("不存在"); numberSpan.innerHTML = "账号不存在".fontcolor("red"); return false; } } else alert("服务器端错误"); } } // 检查密码,给出提示信息 function checkPsw(pswNode) { var spanNode1 = document.getElementById("pswSpan"); var Role= document.getElementById("role"); var Number= document.getElementById("number"); if (pswNode.value == "") { spanNode1.innerHTML = "密码必须填写".fontcolor("red"); return false; } else { pwdSpan.innerHTML = "<img src='Img/g.gif'>"; document.getElementById("feedback_info").innerHTML=""; return true; } } // 检查是否选中角色 function checkRole(selNode) { var index = selNode.selectedIndex;// 获得选中下标 var spanNode1 = document.getElementById("roleSpan"); if (index <= 0) { spanNode1.innerHTML = "必须选择角色".fontcolor("red"); return false; } else { spanNode1.innerHTML = "<img src='Img/g.gif'>"; document.getElementById("feedback_info").innerHTML=""; return true; } } // 检查表单 function checkLogin(o) { var Role=o.role; var Number= o.number; var Pwd= o.pwd; if(checkNumber(Number)&&checkPsw(Psw) &&checkRole(Role)) { xmlHttp = createXMLHttpRequest(); //createXMLHttpRequest申明的是局部变量,这里访问不到xmlHttp,要给xmlHttp变量赋值才行 var url="servlet/CheckLoginServlet?number="+Number.value+"&role="+Role.value+"&pwd="+Pwd.value+"&LoginTime="+new Date().getTime(); url = encodeURI(url); //转换码后再传输 xmlHttp.open("GET",url,true);//加时间戳防止IE缓存 //xmlhttp.setRequestHeader( "Content-Type", "text/html;charset=UTF-8" ); xmlHttp.onreadystatechange = handleStateChange2; xmlHttp.send(null); return true; } else{ document.getElementById("feedback_info").innerHTML="请填写每一项".fontcolor("red"); return false; } } function handleStateChange2() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { //alert("来自服务器的响应:" + xmlHttp.responseText); if(xmlHttp.responseText == '0'){ document.getElementById("feedback_info").innerHTML="账号与密码不匹配".fontcolor("red"); return false; } else if(xmlHttp.responseText == '1'){ document.getElementById("feedback_info").innerHTML=""; window.location.href="index.jsp"; return true; } } else alert("服务器端错误"); } }[/code] chuckLoginservlet [code="java"]public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); doPost(request, response);// 调用doPost方法 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=UTF-8"); String number=""; try { number = new String(request.getParameter("number").getBytes( "ISO-8859-1"), "UTF-8"); } catch (Exception e1) { System.out.println("number为空"); } String role="0"; int rID=0; try { role = new String(request.getParameter("role").getBytes( "ISO-8859-1"), "UTF-8"); rID=Integer.parseInt(role);//把获得的role的值转成整型 } catch (Exception e1) { System.out.println(request.getParameter("role")+"******role"); } String pwd=""; try { pwd = new String(request.getParameter("pwd").getBytes( "ISO-8859-1"), "UTF-8"); } catch (Exception e) { System.out.println(request.getParameter("pwd")+"****pwd"); } // String txt = new String(number.getBytes("ISO-8859-1"), "UTF-8"); // System.out.println(txt+"********"); PrintWriter out = response.getWriter(); User u = new User(); UserDao ud = new UserDaoImpl(); u = ud.findUserByNumber(number);//通过账号找到用户对象 if (u != null) {// 找到该用户 int u_id = u.getU_id();// 获得该用户的ID UserRole ur = new UserRole(); UserRoleDao urd = new UserRoleDaoImpl(); ur = urd.findUserRoleByUserId(u_id);// 找到中间表UserRole的记录 int r_id = ur.getRole().getR_id();// 由Userrole表找到Role表的相对应角色名称 if (r_id==rID && u.getU_password().equals(pwd))// 如果数据中的角色和密码与之对应 { out.write("1");//1表示验证通过 } else { out.write("0");//0表示密码与账号不匹配 } } out.flush(); out.close(); }[/code]
ajax登录验证,data返回值
$.ajax({ // 请求发送方式 type: 'post', // 验证文件 url: 'login/login', // 用户输入的帐号密码 data: {'adminname': $("#adminname").val(), 'password': $("#password").val()}, // 异步,不写默认为True async: true, //请求成功后的回调 success: function(data){ if (data){ alert(data); alert('登录成功') }else{ alert('帐号或密码错误'); } }, error: function(){ alert('服务端异常'); } if (data)里的data,后台怎么传值给data来判断账号霍迷码是否错误?网上说用0或 1来判断,那后台怎么把0或1传到 data里? 我后台是这样的 /** * 登录方法验证 * */ @RequestMapping("/login") public String login(HttpServletRequest request,HttpServletResponse response,Model model){ //从前台获得输入的账号密码 String user = request.getParameter("adminname"); String psw = request.getParameter("password"); //先判断前台传来的账号是否为空 if(user == null || user==""){ //前台提示 model.addAttribute("msg", "账号为空"); //返回登录界面 return "products/login"; } //通过adminname查询整条数据 admin admin = adminMapper.getAdminByName(user); //判断数据库里是否有这条数据 if(admin==null || "".equals(admin)){ model.addAttribute("msg", "账号或密码错误"); return "products/login"; } //判断账户adminname有没有 if("".equals(admin.getAdminname())){ model.addAttribute("msg", "账号或密码错误"); return "products/login"; } //判断密码password是否存在 if(admin.getPassword()== null){ model.addAttribute("msg", "账号或密码错误"); return "products/login"; } //判断查询到的密码是否与数据库相对应的密码相同 if(!admin.getPassword().equals(psw)){ model.addAttribute("msg", "账号或密码错误"); return "products/index"; } model.addAttribute(user); //验证若都通过则跳到管业页面 return "zhuye"; }
validationEngine.js 的ajax验证中文传值到后台变成乱码了,怎么处理?
页面validationEngine初始化 和ajax验证 ``` <script type="text/javascript"> $(document).ready(function(){ $.extend($.validationEngineLanguage.allRules,{ "ajaxRmCustomerName": { "url": "$ctx/rmCustomer/ajaxRmCustomerName", "alertTextLoad":"* 检查中, 请稍后...", "alertText":"* 客户名称已存在." } }); $("#rmCustomerAddForm").validationEngine('attach', { focusFirstField:true,//验证不通过时给第一个不通过的获取焦点 validationEventTrigger : "blur",//触发验证的方式为失去焦点 autoPositionUpdate : true,//是否自动(根据窗口大小)调整提示层的位置 ajaxFormValidation : false,//设置为true,默认使用 Ajax 验证表单(验证时默认get方式提交表单数据) showOneMessage : true,//只显示一个错误提示 promptPosition : "topRight",//提示框位置 autoHidePrompt : true,//为true时,自动隐藏提示信息 autoHideDelay : 2000//延时多少时间隐藏提示信息 }); }); </script> ``` 页面文本框和验证 ``` <label class="col-sm-3 control-label no-padding-right"> 客户名称: </label> <div class="col-sm-4"> <input type="text" class="form-control" id="name" name="name" data-validation-engine="validate[required,funcCall[validationillegalCharacter],maxSize[20],ajax[ajaxRmCustomerName]]"/> </div> ``` 后台代码 ``` /** * 验证名字是否存在 * @param rmUser */ @RequestMapping(value = "/ajaxRmCustomerName", method = { RequestMethod.POST, RequestMethod.GET }) @ResponseBody public String ajaxRmCustomerName(String fieldId,String fieldValue) { boolean flag = false; if(fieldValue!=null&&!fieldValue.equals("")){ RmCustomer rmCustomer = new RmCustomer(); rmCustomer.setName(fieldValue); List<RmCustomer> uc = rmCustomerService.selectCutomerByName(rmCustomer); if(uc==null||uc.size()==0) flag = true; } JSONArray json = new JSONArray(); json.add(fieldId); json.add(flag); return json.toString(); } ``` 页面输入 (https://img-ask.csdn.net/upload/201803/09/1520575860_428878.png) 后台接收 (https://img-ask.csdn.net/upload/201803/09/1520575876_301092.png)
JQuery easy ui验证在文本框为空时不会触发验证事件,求解决!!!
JQuery easy ui验证在文本框为空时不会触发验证事件, <td>用户组: <input class="easyui-validatebox" name="roleID_lk" id="roleID_lk" editable="false" data-options="validType:'mustselect'" type="text" /> </td> 这里我用JQuery easy ui 生成了一个下拉框,为空时文本框不会触发验证事件 这里是验证的扩展代码: $.extend($.fn.validatebox.defaults.rules, { valiEmp: { //验证用户Id是否有效 validator: function (value, param) { var bl = false; $.ajax({ type: 'POST', async: false, dateType: 'json', url: 'ValadateUser', data: 'name=' + value, success: function (result) { if (result == "false") { bl = false; } else { bl = true; } } }); return bl; }, message: '该用户名已存在!' }, minLength: { validator: function (value, param) { return value.length >= param[0]; }, message: '密码长度至少为6位' } , mustselect: { validator: function (value, param) { if ($(".combobox-item-selected").length <= 0) { return false; } return true; }, message: '请选择一个用户组!', missingmessage: "请选择一个用户组" } }); 有没有什么好的方法解决这个文本框为空不触发验证事件的问题?
jquery validate ajax验证的问题
[code="java"] jQuery.validator.addMethod("checkCaptcha", function (value, element){ if(value == null || value == "") return false || this.optional(element); var obj = this.optional(element); $.ajax({ url: validataCode_url, data:{validateCode:value}, async: false, dataType: 'json', success: function (response) { if(response) return true || obj; else{ return false || obj; } } }); },message); [/code] struts2返回的json为boolean 现在遇到的情况是response为true或false时提示信息始终都是错误提示,不知何故?
ajax 做验证,返回真假
<p>这里是验证的代码 javascript 代码:</p> <pre name="code" class="js">if (z == "ajaxrepeat") { //ajax 验证是否重复 var url2 = y.attr("url"); //获取需要对比的输入框的ID var proving = $.trim(x); if (proving != "") { $.ajax({ url: url2, type: 'POST', data: { "paths": proving }, dataType: "html", success: function(data){ //拆分字符串 var data2 = data.split(","); if (data2[0] == "true") { if (data2[1] != undefined) { var data3 = decodeURIComponent(data2[1]); } //改变提示 y.next(".provinghtml").html(data3); y.next(".provinghtml").css("color", "#79A605"); return true; } else { //否则,如果第二个字符串不为空,则弹出提示 if (data2[1] != undefined) { var data3 = decodeURIComponent(data2[1]); } //改变提示 y.next(".provinghtml").html(data3); y.next(".provinghtml").css("color", "#FF0000"); return false; } } }) } else { //改变提示 y.next(".provinghtml").html("请输入正确信息"); y.next(".provinghtml").css("color", "#FF0000"); return false; }</pre> <p> </p> <p>   哪位可以帮我看看要怎么返回真假,就差这个功能没有实现了</p>
ajax 为什么里面最后返回的值都是最开始赋值的true
; (function ($) { $(document).ready(function () { $("form").submit(function () { var flag = true; //验证账号密码 //获取用户信息框 var $account = $("input[name=account]"); var $password = $("input[name=password]"); var userData = { account: $account[0].value, password: $password[0].value }; //清空验证信息 if (userData.account == "") { flag = false; swal({ title: "提示", text: "请输入账号" }); } if (userData.password == "") { flag = false; swal({ title: "提示", text: "密码不能为空" }); } if (userData.password != "" && userData.account != "") { $.ajax({ type: "POST", url: "/api/User/Login", data: { "account": userData.account, "psd": userData.password }, dataType: "json", error: function (data) { flag = false; alert("登录错误,请于管理员联系"); }, success: function (data) { if (data.code == 4) { flag = false; alert(data.errorMsg); } if (data.code == 2) { flag = false; alert(data.errorMsg); } } }); } aler(flag); //这里不管ajax里面怎么判断,这里都是true return flag; }); }); })(jQuery);
ssm 框架已经实现,但是ajax返回验证有毛病
``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>js+ajax</title> <script type="text/javascript" src="static/bootstrap/js/jquery-2.0.3.js"></script> <script type="text/javascript"> function validate(){ var name= $("#name").val(); if(name==null||name==""){ //为空隐藏提交按钮 var ui =document.getElementById("tijiao"); ui.style.display="none"; //这里是简单的显示 不设计后台,前台做的判断 $("#namediv").html("用户名不可以为空"); }else{ //ajax实现 //11111111获取XMLhtmlRequestxml对象 var req=createXmlHttpRequest(); //222222222准备url 数据 回调函数 //这个name是function下面var的参数. var url="/maven/reg1.do?name="+name; //还有一个参数表示的是异步还是同步,一般不写直接就是true,异步的 req.open("GET",url,true); //3333333333这个就是回调函数 req.onreadystatechange=callback; //这个send是在从servlet判断你的账号是不是存在, 如果是true就说名字存在,给页面返回了以后才有的.为啥写空不知道 //4发送请求 req.send(null); //回调函数 function callback(){ //第一个是我们的服务器成功接受了响应,并且解释了出来,状态4 第二个是服务器内部没有发生错误, url什么的也没有错, if(req.readyState=4&&req.status==200){ var date=req.responseText; if(date=="false"){ //下面的是意思是,如果账号存在了,提交按钮自动消失 //超级叼 var ui =document.getElementById("tijiao"); ui.style.display="none"; $("#namediv").html("用户名已经存在"); }else{ //不为空了,按钮一直显示 var ui =document.getElementById("tijiao"); ui.style.display=""; $("#namediv").html("用户名可以使用"); } } } } } function createXmlHttpRequest(){ //如果是ie6以上版本的浏览器 if(window.XMLHttpRequest){ return new XMLHttpRequest(); }else{ //如果浏览器是ie以下的 return new ActiveXObject("Microsoft.XMLHTTP"); } } </script> </head> <body> <form action="/maven/reg1.do" id="form1"> <table id="aa"> <tr> <td>用户名</td> <td><input type="text" name="username" id="name" onblur="validate();" />&nbsp;<font color="red">*</font></td> <td> <div id="namediv" style="display: inline"></div> </td> <td>密码</td> <td><input type="password" name="password"></td> <td>电话</td> <td><input type="text" name="phone"></td> <td><input type="submit" value="点击注册" id="tijiao"></td> </tr> </table> </form> </body> </html> ``` ``` ``` ``` package com.gray.user.controller; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import com.gray.user.entity.RegUser; import com.gray.user.service.impl.RegServiceImpl; import com.gray.user.service.impl.UserServiceImpl; @Controller public class RegController { @Autowired private RegServiceImpl userService; //自动装载他到spring @RequestMapping("/reg1.do") //url public String dologin(Model model,HttpServletResponse res,@RequestParam String username,RegUser rg,HttpServletResponse response) throws IOException{ boolean used=false; System.out.println("测试参数获取到bean没有"+rg.getUsername()+rg.getPassword()+rg.getPhone()); rg.setUsername(username); if(userService.doUserLogin(rg)){ used=true; System.out.println("通过control到--->service---到dao---到usermapp.在返回回来,service里面是ture,就是说账号不重复"); }else{ used=false; System.out.println("通过control到--->service---到dao---到usermapp.在返回回来,service里面是false,重复了账号 "); } return "regsuccess"; } } ``` ``` package com.gray.user.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.gray.user.dao.UserDao; import com.gray.user.entity.RegUser; import com.gray.user.entity.User; import com.gray.user.service.RegService; import com.gray.user.service.UserService; @Service public class RegServiceImpl implements RegService { @Autowired private UserDao<RegUser> dao; @Override public boolean doUserLogin(RegUser ruser) { //第一次执行查询数据库,查询 userdao selectUserName方法。 他这个方法和user.xml里面的id为selectUserName串联了. //也就是直接调用查询语句,并且吧值返回给reguser 类 System.out.println("testRegServiceImpl------->查询数据库,查询语句为id是selectusername"); List<RegUser> list = dao.selectUserName(ruser.getUsername()); System.out.println("查到了集合大小是"+list.size()+"查到了和你账号相同是的是几个"); if(list.size() == 0){ System.out.println("RegServiceImpl---你没有查询到你账号和数据库相同的信息.所以你return,"); for(int i=0;i<list.size();i++){ System.out.println(list.get(i).getUsername()); } return true; }else{ if(list.size()!=0){ System.out.println("regServiceImpl---查询到和你相同的账号不是0个,返回false"); return false; }else{ System.out.println("regserviceImpl----其他情况我也不知道啥情况,也返回false"); return false; } } } } ``` ``` 页面上的ajax 他就一直出毛病,数据库有个账号名是aa 只有我在表单填写aa 他才在网页提示账号重复, 别的任何都不提示,只会提示不能为空, 而且还失灵时不灵。 但是用system. 输出 我写的任何判断都是对了, 这是为啥? 请求大神给我说下,最好说下哪里错了。谢谢了
js中使用ajax函数做同步请求Servlet连接数据库进行验证
这是一个js表单验证,验证email的部分,我想达到的目的是在输入email信息结束后进行验证,前两个条件直接自身进行验证,效果已经实现了,后面的那个我想用ajax的效果进行同步验证,防止email重复,但是效果一直出不来,不知道是否是ajax函数参数设置有问题什么的,或者eclipse出bug什么的,请问有人帮忙看一下的么? email输入部分代码: <tr> <td class="tdLabel">Email:</td> <td class="tdInput"><input type="text" name="email" id="email" class="input" value="" /></td> <td class="tdError"><label class="labelError" id="emailError"></label> </td> </tr> js代码如下: function validateEmail() { $("#emailError").css("display", "none"); var bool = true; var val = $("#email").val(); if(!val) { $("#emailError").text("Email不能为空!"); $("#emailError").css("display", ""); bool = false; } else if(!/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(val)) { $("#emailError").text("错误的Email格式!"); $("#emailError").css("display", ""); bool = false; } else { $.ajax({ url:"/goods/UserServlet", data:{method:"ajaxValidateEmail",email:value}, type:"POST", dataType:"json", async:false, cache:false, success:function(result){ if(!result){ $("#emailError").text("该邮箱已经被注册了"); $("#emailError").css("display", ""); bool = false; } } }); } return bool; } 请求的Servlet的函数如下: public void ajaxValidateEmail(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String email = request.getParameter("email"); boolean emailPass = userService.ajaxValidateEmail(email); response.getWriter().print(emailPass); } service部分: public boolean ajaxValidateEmail(String email){ return userDao.ajaxValidateLoginname(email); } 数据库层代码: public boolean ajaxValidateEmail(String email){ String sql = "select count(1) from t_user where email=?"; try { Number number = (Number)queryRunner.query(sql, new ScalarHandler(), email); return number.intValue() == 0; } catch (SQLException e) { throw new RuntimeException(e); } }
使用ajax验证帐号是否重复,使用innerHTML在页面得不到信息
js代码: var xhr = getXhr(); function getXhr(){ var xhr = null; try { xhr = new XMLHttpRequest(); } catch (trymicrosoft) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (othermicrosoft) { try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } catch (failed) { xhr = false; } } } if (!xhr) { alert("err Happend!"); } return xhr; } function check() { var user = document.getElementById("user").value; var url = "RegisterServlet?id=" + user; if (xhr.readyState == 4 && xhr.status == 200) { var str = xhr.responseText; if (str=="OK") { document.getElementById("checkname").innerHTML="用户名可用"; } else { doucument.getElementById("checkname").innerHTML="用户名重复"; } } xhr.open('get',url,true); xhr.send(null); } 前端代码: ![图片说明](https://img-ask.csdn.net/upload/201601/01/1451624017_737138.png) servlet代码: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("utf-8"); PrintWriter out=response.getWriter(); String username=request.getParameter("id"); System.out.println(username); if(username.equals("1")){ out.println("OK"); }else { out.println("NO"); } } 我测试用户名输入是否为1来判断,从servlet传值过来,但是在jsp里面span标签那显示不出来信息, 测试显示这个错误: ReferenceError: doucument is not defined,报错行数在js的if判断innerhtml行 各位大大帮忙看看
Ajax既不执行success方法也不执行error方法
客户端代码 $("#imgLogin").click(function () { debugger; var name = $("#txtName").val(); var pwd = $("#txtPwd").val(); var validate = $("#txtValidate").val(); $.ajax({ type: "post", url: "Login.asmx/UserLogin", data: JSON.stringify({ "_name": name, "_pwd": pwd, "_validate": validate }), contentType: "application/json;charset=utf-8", dataType:"json", success: function (value) { if (value == "1") { alert("登陆成功"); } }, error: function () { alert("系统错误"); } }); }); 服务器端代码: [WebMethod(EnableSession = true)] public string UserLogin(string _validate,string _name,string _pwd) { int flag = 0; //flag为0表示验证码错误,为1表示登陆成功,为2表示密码错误 if (_validate.ToUpper() == Session["code"].ToString().ToUpper()) { try { string _sqlStr = "select * from [user] where name='" + _name + "' and pwd='" + _pwd + "'"; DBHelper _helper = new DBHelper("sqlConStr"); if (_helper.ExecuteQuery(_sqlStr).Rows.Count>0) { Session["userName"] = _name; Session["userID"] = _helper.ExecuteQuery(_sqlStr).Rows[0]["ID"].ToString(); flag = 1; } else { flag = 2; } } catch (Exception _exception) { flag = 2; throw _exception; } } else { flag = 0; } return "{'flag':" + flag.ToString() + "}"; //return flag.ToString(); }
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> // 能帮我解决问题的才回复,或者还需要我提供什么的请留言,谢谢了,
ajax传值,servlet得到为空
js代码: var xhr = getXhr(); function getXhr(){ var xhr = null; try { xhr = new XMLHttpRequest(); } catch (trymicrosoft) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (othermicrosoft) { try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } catch (failed) { xhr = false; } } } if (!xhr) { alert("err Happend!"); } return xhr; } function check() { var user = document.getElementById("user").value; var url = "RegisterServlet"; if (xhr.readyState == 4 && xhr.status == 200) { var str = xhr.responseText; document.getElementById("checkname").innerHTML=str; } xhr.open('post',url,true); alert(user); xhr.send("id"+user); } servlet代码: package com.Servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.text.ParseException; import java.text.SimpleDateFormat; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.Dao.LoginDao; import com.Model.Login; public class RegisterServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); String username=request.getParameter("id"); System.out.println(username); LoginDao dao=new LoginDao(); boolean mark=dao.RegisterCheck(username); System.out.println(mark); if(mark==true){ out.println("用户名重复"); System.out.println("用户名重复"); }else if(mark==false){ out.println("用户名可用"); System.out.println("用户名可用"); } } } 只截取了ajax传值部分,还有登陆的验证也写在doPost里先删了, 之前用get方法能行,改成post就出问题了; 大神帮看看,js里能得到user的值,servlet得到ajax传来的user值为null,
ajax校验数据库数据是否存在
``` <!-- 查询student_id是否存在 --> <select id="getStudent_id" resultMap="studentMap" parameterType="int"> SELECT * from student where student_id = #{student_id} </select> ``` ``` @RequestMapping("/studentID") public Student getStudent_id(Integer student_id) { Student student = userService.getStudent_id(student_id); if (student==null){ System.out.println("没有"); }else{ System.out.println("有"); } return student; } ``` ``` function check() {//js表单验证方法 var text = document.getElementById("xh").value;//通过id获取需要验证的表单元素的值 if (text == "") { alert("请输入学号!");//弹出提示 return false;//返回false(不提交表单) } if (!(/(^[1-9]\d*$)/.test(text))) { alert("请输入学号!");//弹出提示 return false;//返回false(不提交表单) } var student_id=$("#student_id").val(); $.ajax({ url:"<%=basePath%>user/studentID", type:"post", data:{"student_id":student_id}, dataType:"json", success:function(data){ if (data!=null ) { alert("有"); }else if(data==null && username !=''){ alert("没有"); } xmlhttp.open("GET","getcustomer.asp?q="+str,true); xmlhttp.send(); //alert("啊啊啊"); } }); return true;//提交表单 } </script> <body> <div class="listDIV"> <table border="1" width="50%" height="50%" style="text-align: center;"> <form action="<%=basePath%>user/one" method="post"> <input type="text" id="xh" name="student_id" placeholder="根据学号查询"> <button class="glyphicon glyphicon-select" onclick="return check();">查询</button> </form> ``` ``` 严重: Servlet.service() for servlet [springMVC] in context with path [/StudentManagementSSM] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause java.lang.NullPointerException at com.zmk.controller.UserTestController.getStudent_id(UserTestController.java:65) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1139) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) ``` 我用ssm做的增删改查,搜索我想先校验一下数据库数据是否存在,存在就直接跳转查询,不存在就弹窗提示,中止提交表单,JS代码是我粘过来的,不会JS,有错误希望能告诉我如何改正,谢谢
Action返回给Ajax,ajax接收值的问题
//根据IE的类型创建一个XmlHttpRequest对象 function createXmlHttpRequest(){ if(window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); } else if(window.XMLHttpRequest) { return new XMLHttpRequest; } } var xmlHttpRequest; //根据用户名称发送请求到服务器 function requestServer(){ var userName=document.getElementById("uname").value; if ( userName== ""){ alert("请输入用户!"); document.getElementById("uname").focus(); return; } var userPassword=document.getElementById("upassword").value; if ( userPassword== ""){ alert("请输入密码!"); document.getElementById("upassword").focus(); return; } var securityCode=document.getElementById("validateNum").value; if ( securityCode== ""){ alert("请输入验证码!"); document.getElementById("validateNum").focus(); return; } var cookieData=document.login.cookieData.checked; delCookie("cookieName"); delCookie("cookiePassword"); delCookie("cookieData"); if(cookieData==true){ saveCookie("cookieName",userName); saveCookie("cookiePassword",userPassword); saveCookie("cookieData",cookieData); } var account=document.getElementById("uname").value; if(account!=null) { var url="userAction.do?action=checkValidName&account="+account; //创建XMLHttpRequest组件 xmlHttpRequest=createXmlHttpRequest(); //设置回调函数,让其等待服务器的响应 xmlHttpRequest.onreadystatechange=doSubmit; //初始化xmlHttpRequest组件,传入URL xmlHttpRequest.open("GET",url,true); //发送请求 xmlHttpRequest.send(null); } } //登录,获得服务器返回的信息并做出相应提示 function doSubmit(){ if(xmlHttpRequest.readyState==4 && xmlHttpRequest.status==200){ var text=xmlHttpRequest.responseText; alert(text); if(text=="1"){ alert("此用户名不存在!"); document.getElementById("uname").focus(); return; }else if(text=="2"){ alert("验证码错误"); document.getElementById("validateNum").focus(); return; }else if(text=="0"){ submitForm(login); } } } Action调用下面这个JAVA类 Java类代码 * 判断用户名和验证码是否正确 */ public int checkValidName(){ System.out.println("我进来checkValidName了"); String account = ServletActionContext.getRequest().getParameter("account"); System.out.println(account); //判断用户名是否存在 int a = this.privilegeService.ValidName(account); if(a==1) { this.setMessage("用户名不存在!"); return 1; }else{ //判断验证码是否正确 String validateNum = this.getValidateNum(); String result = ServletActionContext.getRequest().getSession().getAttribute("ValidateNum").toString(); if(validateNum == null ||result == null || validateNum.trim().equals("")||!result.equalsIgnoreCase(validateNum)){ this.setMessage("验证码输入错误登录失败!"); return 2; } } return 0; } var text=xmlHttpRequest.responseText; alert(text);为什么text打印出来是下面图片信息啊 为什么我得到的text不是我Action返回的值?我要怎么才能得到Action return的值。
jquery ajax 上传文件 后台取不到file
正在做一个文件上传的程序,在上传之前需要验证文件的大小,不能超过10M,我采用的是jquery ajax的方式提交到后台Action,由后台Action判断文件大小。 首先看jsp页面: <form name="upload" method="post" enctype="multipart/form-data" action="publish/publish_upload.action" > <span> <s:text name="publish.content"/> <input type="file" name="file" id="uploadfile" onchange="checkFileSize()"> <font size="2" id="xx" color="blue" style="margin-left:30px; ">上传的文件不得大于10M</font> 。。。。省略部分.... </form> javascript代码: function checkFileSize() { var uploadfile = jq("#uploadfile"); var returnval = false; if(uploadfile.val()==""){ alert("请选择需要上传的文件"); return false; } var formData = new FormData(); formData.append("userfile",jq("#uploadfile")); var url = "ajax/ajax_checkFileSize.action"; jq.ajax({ type: "POST", url: url, async: false, enctype: 'multipart/form-data', data: formData, cache: false, contentType: false, processData: false, success: function (msg) { if(msg=="0"){ jq("#checkfile").text(""); alert("上传文件"+uploadfile.val()+"大于10M"); returnval = false; }else{ jq("#checkfile").text("文件可以上传"); jq("#checkfile").reset(); returnval = true; } } }); return returnval; } ajax后台判断也很简单: public String checkFileSize() throws IOException{ out = response.getWriter(); String message=""; try { response.setCharacterEncoding("utf-8"); double size = (double)file.length()/1048576; if(size>10){ message = "0"; }else{ message = "1"; } } catch (Exception e) { e.printStackTrace(); message="0"; }finally{ out.write(message); out.flush(); out.close(); } return null; } 但是每次都在double size = (double)file.length()/1048576;这里报空指针异常 请大家帮忙看看!
关于Ajax xmlhttp的问题
我想实现的功能是这样的,利用ajax的异步请求在提交表单之前实现对一个输入框中数据的验证,期待实现的效果是点击提交按钮,如果输入数据符合要求,就提交表单。但是现在实现的效果是点击提交按钮,在校验输入数据符合要求后,还需要再点击一次才能提交表单。 代码如下: jsp: < form action="formaction.action" method="post" onsubmit="return formsubmit()"> < input type="submit" value="提交表单">< /form> js: ``` function formsubmit(){ var xmlhttp; xmlhttp=ajaxfun(); var datavalue=document.getElementById("data").value; var url="datacheckaction?data="+datavalue+"&time="+(new Date().getTime()); xmlhttp.open("post",url,true); xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlhttp.send(null); xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==4 && xmlhttp.status==200){ document.getElementById("spandata").innerHTML=xmlhttp.responseText; } } } if(document.getElementById("spandata").innerHTML==""){ return true; }else{ return false; } } ``` 这个xmlhttp.responseText测试了没问题,数据校验通过是个"",校验不通过是个"wrong"。。。 用span和alert测试了几次,也有一些想法但是很快就都否定了,不知道问题在哪里。。。 忘记补充一点,有一个想法是这样的。。spandata这个地方在jsp页面上的初始值有,是"此项不可为空",我觉得最有可能的问题是formsubmit()这个函数的最后几行,判断spandata是否为空是在得到异步请求结果之前,应该是这样。。。但是不知道怎么解决
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
立即提问