当前位置: 代码迷 >> J2EE >> ajax实现无刷新检测解决方法
  详细解决方案

ajax实现无刷新检测解决方法

热度:71   发布时间:2016-04-22 02:12:48.0
ajax实现无刷新检测
JScript code
<script language="javascript">var http_request = false;function createRequest(url) {    //初始化对象并发出XMLHttpRequest请求    http_request = false;    if (window.XMLHttpRequest) { // Mozilla或其他除IE以外的浏览器        http_request = new XMLHttpRequest();        if (http_request.overrideMimeType) {            http_request.overrideMimeType("text/xml");        }    } else if (window.ActiveXObject) { // IE浏览器        try {            http_request = new ActiveXObject("Msxml2.XMLHTTP");        } catch (e) {            try {                http_request = new ActiveXObject("Microsoft.XMLHTTP");           } catch (e) {}        }    }    if (!http_request) {        alert("不能创建XMLHTTP实例!");        return false;    }    http_request.onreadystatechange = alertContents;    //指定响应方法    //发出HTTP请求    http_request.open("GET", url, true);    http_request.send(null);}function alertContents() {    //处理服务器返回的信息    if (http_request.readyState == 4) {        if (http_request.status == 200||http_request.status==0) {            alert(http_request.responseText);        } else {            alert('您请求的页面发生错误!');        }    }}function checkName() {    var username = form1.username.value;    if(username=="") {        window.alert("请添写用户名!");        form1.username.focus();        return false;    }    else {        createRequest('checkName.jsp?username='+username);    }}</script>

HTML code
 <td width="293" id="td1"><input type="text" id="username" name="username"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value="检测用户名" onClick="checkName()"></td>

通过Onclick调用函数,转入checkName.jsp文件,如下:
SQL code
<%//request.setCharacterEncoding("GB2312");String username=request.getParameter("username");try{            Class.forName("com.mysql.jdbc.Driver");        }catch (ClassNotFoundException e) {                        e.printStackTrace();        }    //    try{            Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/hrm","root","root");    /*    }catch (SQLException e) {                        e.printStackTrace();        }*/Statement stmt=conn.createStatement();String sql="select * from userinfo  where userName='"+username+"'";ResultSet rs=stmt.executeQuery(sql);if (rs.next()){    out.println("很报歉!用户名"+username+"已经被注册!");}else{    out.println("祝贺您!用户名"+username+"没有被注册!");}rs.close();conn.close();stmt.close();%>

为什么不管我输入什么,都提示没有被注册,我输入的东西数据库有,我用servlet检测时就是正确的,但是用这个不知道为什么不对

------解决方案--------------------
你在jsp里面打印一个username 很有可能是一个空串 你的createRequest传入的url不要在括号里面做拼接 拼接好再传进去
------解决方案--------------------
把SQL打印出來,然后丢到数据库执行
------解决方案--------------------
你应该先按照1楼说的 先打印 String username=request.getParameter("username");
这个 username 有可能是空值 还有可能是乱码 如果都不是那你就 打印sql语句 到数据库执行下就知道是代码的问题还是数据哭的问题了 如果数据库的sql是对的 那就可能是链接数据库时候的编码跟数据库不一致导致查询出错 你可以用characterEncoding=数据库编码 eg: con = DriverManager.getConnection("jdbc:mysql:///db?characterEncoding=utf-8", "root", "123456"); 先找到问题的所在 希望对你有帮住
------解决方案--------------------
  相关解决方案