【发布时间】:2020-06-15 22:13:26
【问题描述】:
在我的项目中,我有 html 选择文件和 html 文本文件。我想显示一些在 html 选择文件选项 onchange 事件时访问 html 文本文件中的数据库的结果。为此,我编写了这个 servlet 代码,它从 access 数据库中获取数据并将结果发送到 jsp 页面。
package org.solr;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class getValues
*/
@WebServlet("/getValues")
public class getValues extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public getValues() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String salesOrder=request.getParameter("salesOrder");
System.out.println(salesOrder);
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
String db_path="C:\\Users\\ftk1187\\Desktop\\ad\\Test1.accdb";
Connection con=DriverManager.getConnection("jdbc:ucanaccess://"+db_path+";jackcessOpener=CryptCodecOpener","","12345tec");
Statement state=con.createStatement();
ResultSet rs=state.executeQuery("SELECT * FROM tblSO_all WHERE strSO='"+salesOrder+"'");
while(rs.next())
{
String indDate=rs.getString("strDate");
System.out.println(indDate);
request.setAttribute("indDate", indDate);
request.getRequestDispatcher("upload.jsp").forward(request, response);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
在jsp端,我写了这段javascript代码
<script>
function strSO(){
var salesOrder=$("#sOrder option:selected").val();
$.ajax({
type:'get',
url:'getValues',
data:'salesOrder='+salesOrder,
dataType:'text/plain',
success:function(){
console.log("success");
}
document.getElementById("indDate").value=<%=request.getAttribute("indDate")%>
});
}
</script>
servlet 运行正常,我在 eclipse 的控制台中使用 sysout 看到了结果。但结果未显示在 html 文本文件中。那么问题出在哪里?
更新
更新
经过斯瓦蒂的回答,问题的解决方法是这样的
String salesOrder=request.getParameter("salesOrder");
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
String db_path="C:\\Users\\ftk1187\\Desktop\\ad\\Test1.accdb";
Connection con=DriverManager.getConnection("jdbc:ucanaccess://"+db_path+";jackcessOpener=CryptCodecOpener","","12345tec");
Statement state=con.createStatement();
ResultSet rs=state.executeQuery("SELECT * FROM tblSO_all WHERE strSO='"+salesOrder+"'");
while(rs.next())
{
String indDate=rs.getString("strDate");
System.out.println(indDate);
response.getWriter().write(indDate);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
还有这样的脚本
<script>
function salesOrder(){
var salesOrder=$("#sOrder option:selected").val();
$.ajax({
type:'get',
url:'getValues',
data:'salesOrder='+salesOrder,
success:function(data){
console.log("success");
document.getElementById("induction").value=data;
}
});
}
</script>
【问题讨论】:
-
您是否查看了浏览器控制台并确定请求是否发送到正确的 URL?控制台是否按照您的打印记录
success? -
您正在执行 ajax 调用,但不对结果执行任何操作。为什么你希望它出现在任何地方? “在 html 文本文件中”是什么意思?
-
@f1sh 我想动态更改 html 输入文本,我想在我的访问数据库中获取数据。
-
@demir5334 你在哪里更改文本?
document.getElementById("indDate").value行不应该在成功回调函数中吗? -
下一个问题:你怎么能/一个
getElementById()来自text/plain? (所以请“返回 xml/html/dom”或“处理文本”。)下一个问题:document.getElementById(除了不正确)放错了位置,它应该进入(成功)处理程序。
标签: javascript java html jsp