需要帮助ajax

时间:2011-04-03 06:13:38

标签: javascript ajax web-applications

HTML代码:

<html>  
<head>
<script type="text/javascript">
function checkforValid(str)
{
        var xmlhttp;
        if (str.length==0)
        { 
              document.getElementById("txtHint").innerHTML="";
              return;
        }
        if (window.XMLHttpRequest)
        {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
         }
        else
        {
            // code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","get.jsp?q=" + str ,true);
        xmlhttp.send();
    }
    </script>
    </head>

    <body>

        <form action=""> 
            Name: <input type="text" id="user" name = "user" onkeyup="checkforValid(this.value)" />
        </form>

        <br>
        <p>Here : <span id="txtHint"></span> </p> 

    </body>
</html>

JSP:

<%@ page language="java" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.math.*" %>
<%@ page import="java.security.*" %>
<html>
<body>
<%
    String user = request.getParameter("user");
    out.println("Username is::"+user+".");
    Connection con = null;

    try
    {
        Connection conn = null;
        String url = "jdbc:mysql://localhost:3306/";
        String dbName = "p2p";
        String driver = "com.mysql.jdbc.Driver";
        String userName = "root";
        String password = "123";

        Class.forName(driver).newInstance();
        conn = DriverManager.getConnection(url+dbName,userName,password);

        Statement st = conn.createStatement();
        ResultSet rs = st.executeQuery( "select * from newuser where username =" + user  );

            if(rs.next())
            out.println("ok");
            else out.println("absent");

        st.close();
    }
    catch( Exception e )
    {
        out.print( "Database Error"+ e );
    }
    finally
    {
        try
        {
            con.close();
        }
        catch(Exception e1)
        {
        }
    }

%>
</body>
</html>

当我在glassfish上运行时,jsp页面的request.getParameter函数正在接收null,即输出User:null,所以请帮助并为ajax建议一些不错的项目

3 个答案:

答案 0 :(得分:0)

您正在发送:

xmlhttp.open("GET","get.jsp?q=" + str ,true);

然后问:

String user = request.getParameter("user");

它是null,因为您从不发送“user”参数。将其更改为:

xmlhttp.open("GET","get.jsp?user=" + str ,true);

<强>更新


一些AJAX教程/文档站点:

http://www.xul.fr/en-xml-ajax.html

http://code.google.com/edu/ajax/tutorials/ajax-tutorial.html

http://www.hunlock.com/blogs/AJAX_for_n00bs(以及其他许多文档)

http://www.ibm.com/developerworks/web/library/wa-ajaxintro1/index.html

当然,还有BalusC的博客:

http://balusc.blogspot.com/2009/05/javajspjsf-and-javascript.html

答案 1 :(得分:0)

两种替代方案。

1:将request.getParameter("user");更改为request.getParameter("q");

2:使用ajax提交表单,您将获得user参数。

答案 2 :(得分:0)

您要在代码中的名为 q 的变量中将用户名参数发送到JSP,并使用变量用户

进行检索

xmlhttp.open("GET","get.jsp?q=" + str ,true);

现在可以有两个修复:

第一个也是最好的

修复javascript,将变量名称从 q 更改为用户,并让JSP代码保持不变。

xmlhttp.open("GET","get.jsp?user=" + str ,true);

第二次修复(不推荐)

修复JSP中的代码。

而不是String user = request.getParameter("user");将其更改为String user = request.getParameter("q");并让脚本保持原样...

我认为这应该可以解决问题。