AJAX 不从 JSP 中返回值

Posted

技术标签:

【中文标题】AJAX 不从 JSP 中返回值【英文标题】:AJAX not returning the values form JSP 【发布时间】:2013-11-28 11:51:56 【问题描述】:

我正在尝试使用 ajax 从 jsp 中检索值,如此处所述 here 。但它没有从数据库返回值。请帮助解决这个问题

主页

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <title>Jsp Page</title>
        <script>
            function showuser(str)
            
                var xreq;
                if (str == "")
                
                    document.getElementById("showtext").innerHTML = "";
                    return;
                
                if (window.XMLHttpRequest)
                
                    xreq = new XMLHttpRequest();
                
                else
                
                    xreq = new ActiveXObject("Microsoft.XMLHTTP");
                
                xreq.onreadystatechange = function()
                
                    if ((xreq.readyState == 4) && (xreq.status == 200))
                    
                        document.getElementById("showtext").innerHTML
                                = xreq.responseText;

                    
                
                xreq.open("get", "getuser.jsp?q=" + str, "true");
                xreq.send();

            
        </script>
    </head>
    <body>
        <form>
            <select name="user" onchange="showuser(this.value)" >
                <option value="">Select Student name....</option>
                <option value="abhi">abhi</option>
                <option value="alex">alex</option>
                <option value="adam">adam</option>
            </select>
        </form>
        <br/>
        <div id="showtext">The response will come here</div>
    </body>
</html>

数据库连接建立页面

<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.*,java.sql.*,java.io.*" %>
<%@page import="javax.servlet.*" %>
<%@page import="javax.servlet.http.*" %>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>jsp Page</title>
    </head>
    <body>
        <%! Connection con;%>
        <%! Statement s;%>
        <%! ResultSet rs;%>

        <% String name = request.getParameter("st");

            try 

                Class.forName("oracle.jdbc.driver.OracleDriver");
                con = DriverManager.getConnection("URL");
                s = con.createStatement();
                rs = s.executeQuery("select * from studentinfo where name='" + name + "'");
             catch (Exception e) 
                e.printStackTrace();
            
        %>

        <div id="dtl_table"><table border='3' cellpadding='5'
                                   cellspacing='2' >
                <tr bgcolor="66FF00">
                    <th>Name</th>
                    <th>Branch</th>
                    <th>Year</th>
                    <th>Email id</th>
                </tr>
                <tr>
                    <% while (rs.next()) 
                    %>
                    <td><%= rs.getString("NAME")%></td>
                    <td><%= rs.getString("BRANCH")%></td>
                    <td><%= rs.getString("YEAR")%></td>
                    <td><%= rs.getString("EMAIL")%></td>
                    <% %>
                </tr>
            </table></div>
    </body>
</html>

表结构

CREATE TABLE studentinfo(
   name VARCHAR2(30),
   branch VARCHAR2(20),
   year VARCHAR2(20),
   email VARCHAR2(80) 
);

【问题讨论】:

“它没有从数据库返回值” - 实际发生了什么?您是否在浏览器的控制台或服务器端收到任何错误?另外,当您似乎使用没有 jQuery 的纯 javascript 时,为什么这会被标记为“jquery”?请缩进你的代码,以便它可读。 @nnnnn 它没有显示错误它没有从 DB 打印任何值单独打印表头。我正在使用 netbeans,我应该添加任何 jquery 文件来执行这个吗?? @sankrish 在使用 ajax 请求时总是在浏览器中使用 firebug,这样你就可以看到发送请求时到底发生了什么以及你得到了什么 @deepak 感谢您的评论,但我应该在哪里检查萤火虫 “我应该添加任何 jquery 文件来执行此操作吗?” - 不,您显示的代码不使用任何 jQuery 函数。 【参考方案1】:

请求对象中没有参数st

String name=request.getParameter("st");

你传递的参数是q

xreq.open("get","getuser.jsp?q="+str,"true");

【讨论】:

如何用 servlet 替换第二个 JSP 页面。这可能吗,因为我想避免使用 scriplets 你能不能用 servlet 来编辑你的答案,而不是使用 JSP 尝试发布一个新问题

以上是关于AJAX 不从 JSP 中返回值的主要内容,如果未能解决你的问题,请参考以下文章

jQuery ajax success返回值类型与啥有关

AngularJs $http 请求保持挂起,不从数据库返回值

Struct2_使用Ajax调用Action方法并返回值

怎么获取AJAX前台返回JSON 数据

返回本地文本而不从 PHP 脚本解析到 ajax 脚本

JS获取页面返回值的