【发布时间】:2011-12-30 01:16:54
【问题描述】:
我当前的项目让我经常访问数据库。为此,我通过 jQuery Get 和 Post 调用来调用我的 Java Servlet。我想知道在将其发送回 jQuery 之前,使用从 servlet 中的数据库收集的数据构建任何 HTML 是否更好,或者我是否应该单独使用 JavaScript 进行 HTML 注入?例如,假设我有一个包含用户 ID 和用户名的数据库表。如果我想在此表之外创建一个选择框,哪种方法更好?还是有更好的方法?尝试将从数据库中检索到的数据的最原始形式从 servlet 发送到 JavaScript,让它处理所有 HTML 格式会更好吗?
方法 1 (Java)
鉴于以下 HTML/JavaScript
<html>
<head>
<script type="text/javascript" src="scripts/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.get("servlet?cmd=getUsers", function(data) {
$("#select").html(data);
}, "html");
});
</script>
</head>
<body>
<div id="select"></div>
</body>
</html>
使用以下 Servlet
PrintWriter writer = response.getWriter();
response.setContentType("text/html");
writer.println("<select id='userSelect' name='user'>");
while(resultSet.next()) {
String userId = resultSet.getString("ixUser");
String userName = resultSet.getString("sName");
writer.println("<option value='" + userId + "'>" + userName + "</option>");
}
writer.println("</select>");
方法 2 (JavaScript)
鉴于以下 HTML/JavaScript
<html>
<head>
<script type="text/javascript" src="scripts/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.get("servlet?cmd=getUsers", function(data) {
$("#select").html("<select id='userSelect' name='user'>");
$(data).find("user").each(function() {
var id = $(this).find("id").text();
var name = $(this).find("name").text();
$("#userSelect").append("<option value='" + id + "'>" + name + "</option>");
});
$("#select").append("</select>");
}, "xml");
});
</script>
</head>
<body>
<div id="select"></div>
</body>
</html>
使用以下 Servlet
PrintWriter writer = response.getWriter();
response.setContentType("text/xml");
writer.println("<xml>");
while(resultSet.next()) {
String userId = resultSet.getString("ixUser");
String userName = resultSet.getString("sName");
writer.println("<user>");
writer.println("<id>" + userid + "</id>");
writer.println("<name>" + userName + "</name>");
writer.println("</user>");
}
writer.println("</xml>");
【问题讨论】:
-
不要通过 ajax 返回 HTML。返回 JSON 数据。然后从 JSON 构建文档片段并将它们注入 DOM
-
好吧,听起来好像 JSON 是要走的路。尽管给出的所有答案都非常有帮助,但我只需要接受我找到的第一个回答了我的问题的答案。
标签: java javascript jquery html coding-style