gpt4 book ai didi

java - 如何使用ajax从servlet获取数据?

转载 作者:太空宇宙 更新时间:2023-11-04 06:17:28 24 4
gpt4 key购买 nike

首先,这可能看起来像是重复的,但我向你保证,我已经尝试了很多问题,但仍然没有得到正确的答案。所以我在这里问这个。

我有一个 HTML 表单,我想从中向 servlet 提交查询并在不同的分区中显示结果。

我的 HTML 代码主要包含以下内容:

<form>
<input name="query" id="query" placeholder="Query">
<button id="searchDoc">Search</button>
</form>
<div id="search-results"></div>

我有以下 jQuery 来处理 ajax 调用。

$('#searchDoc').click(function() {
var q = $('#query').val();
$.ajax({
url: "QueryServlet",
data: {query:q},
success: function(data) {
alert("data: " + data);
$('#search-results').html(data);
}
});
});

我的QueryServlet是:

@WebServlet("/QueryServlet")
public class QueryServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public QueryServlet() {
super();
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
String query = request.getParameter("query");
QueryUtil qu = new QueryUtil();
String mySqlQuery = qu.buildMySQLSearchQuery(query);
System.out.println(mySqlQuery);
Connection con = null;
Statement st = null;
ResultSet rs = null;
try {
con = new DbConnection().getConnection();
st = con.createStatement();
rs = st.executeQuery(mySqlQuery);
if(rs != null) {
response.setStatus(HttpServletResponse.SC_OK);
while(rs.next()) {
out.println("<a href=\"DownloadServlet?docId=" + rs.getInt("id") + "\">" + rs.getString("fileName") + "</a>");
}
} else {
// TODO add keywords to database
}
} catch (SQLException e) {
e.printStackTrace();
}
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

}

即使我提交有效的查询,div 也不会加载来自 servlet 的数据。数据到达 servlet 并显示在控制台中,但我无法从脚本中检索该数据。

最佳答案

<button>标签相当于 <input type="submit"/> 。如果您在form标签不声明任何 action属性,标准操作会导致页面重新加载。这就导致,虽然返回的数据是插入到#search-results中的。 div,您将永远无法看到它们,因为页面会立即重新加载。

您应该通过以下方式停用默认的“提交”按钮:

$('#searchDoc').click(function(e) {
e.preventDefault();
[....]
});

这应该可以解决您的问题!

关于java - 如何使用ajax从servlet获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27901151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com