【发布时间】:2014-04-30 20:27:42
【问题描述】:
这是问题的解决方案。感谢所有人,特别感谢 Alessandro G. 的私人帮助。
我在 jsp URL 上进行了 load(),以考虑通过排列加载详细说明。 正确的方法是对 SERVLET URL 执行 load(),从表单传递参数化数据。 load() 对 java servlet 执行 GET 操作,java servlet 详细说明排列,他的响应包含用作模板的 jsp 以打印带有排列的 HTML 代码
$(document).ready(function(){
$("form").submit(function(event){
console.log("submit effettuato");
event.preventDefault();
var formData = $(this).serialize();
console.log(formData);
$("#aggiornare").load( "anagrammiajax", formData , function(responseTxt, statusTxt, xhr){
if(statusTxt=="success"){
alert("contenuto esterno cariato correttamente");
}
if(statusTxt=="error"){
alert("error: " + xhr.status + ": " + xhr.statusText);
}
});
});
});
我正在研究 Web 应用程序,我正在尝试创建一个应用程序来显示字符串的排列。
- 我使用了一个名为“index.html”的 html 页面,其中包含一个将单词发送到 servlet 的表单
- servelt 被称为“anagrammiajax”,它可以正常工作
- servlet 详细说明排列并将它们发送到名为“anagrammipartial.jsp”的 jsp 页面
- jsp 页面只使用一个 foreach 来打印所有排列
- 我想在 index.html 页面中使用 ajax load() 方法将 jsp 页面的内容显示到 div 中
问题:
- 我不想在 servlet 详细说明后重定向到 jsp 页面,但我不会再次显示更新后的 div 的 idex.html(可能会从 jsp 重定向到 index.html 并添加一个 setInterval 方法来自动刷新带有计时器的页面并加载内容?)
- jquery load() 方法不会从 jsp 页面加载 div 中的内容(forEach 打印的排列),它返回一个 0 错误
请帮我解决一下
这是我的代码:
index.html
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Anagrammi su JSP usando JSTL, jQuery, AJAX</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="update.js"></script>
</head>
<body>
<h1>Anagrammi su JSP usando JSTL, jQuery e AJAX</h1>
<p>visualizza gli anagrammi (permutazioni) della parola inserita</p>
<div>
<form action="anagrammiajax" name="anagrammi" method="post">
<input type="text" name="parola">
<input id="submit" type="submit" value="genera anagrammi">
</form>
</div>
<div>
<h2>Risultati</h2>
<h3>pagina aggiornata con AJAX e jQuery</h3>
<div id="aggiornare">
</div>
</div>
</body>
</html>
update.js 代码:
$(document).ready(function(){
$("#submit").click(function(){
alert("click");
$("#aggiornare").load("anagrammi-partial.jsp", function(responseTxt, statusTxt, xhr){
if(statusTxt=="success"){
alert("contenuto esterno cariato correttamente");
}
if(statusTxt=="error"){
alert("error: " + xhr.status + ": " + xhr.statusText);
}
});
});
});
这里是servlet代码:
package anagrammiAjax;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.*;
@SuppressWarnings("serial")
public class AnagrammiAjaxServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String parola = req.getParameter("parola");
parola = parola.toLowerCase();
System.out.println(parola);
ArrayList<String> anagrammi = permutations(parola);
for(int i=0; i<=anagrammi.size()-1; i++){
System.out.println(anagrammi.get(i));
}
req.setAttribute("parola", parola);
req.setAttribute("anagrammi", anagrammi);
try {
getServletContext().getRequestDispatcher("/anagrammi-partial.jsp").include(req, resp);
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
static ArrayList<String> permutations(String s) {
ArrayList<String> ret = new ArrayList<String>();
permutation(s.toCharArray(), 0, ret);
return ret;
}
public static void permutation(char[] arr, int pos, ArrayList<String> list){
if(arr.length - pos == 1)
list.add(new String(arr));
else
for(int i = pos; i < arr.length; i++){
swap(arr, pos, i);
permutation(arr, pos+1, list);
swap(arr, pos, i);
}
}
public static void swap(char[] arr, int pos1, int pos2){
char h = arr[pos1];
arr[pos1] = arr[pos2];
arr[pos2] = h;
}
}
最后是jsp代码:
<%@ page language="java" contentType="text/html; charset=US-ASCII"
pageEncoding="US-ASCII"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<c:forEach items="${anagrammi }" var="indice">
<c:out value="${indice}"/>
</c:forEach>
【问题讨论】:
-
问题是你的
load()函数实际上并没有传递表单数据。它只是告诉jsp页面加载,如果没有相应控制器期望的数据,页面就无法加载。表单通常设计用于传递数据并加载不同的页面。您可以使用 jQuery 在请求中发送带有parola的 AJAX 请求。不过,我对 jsp 的了解还不够,无法更清楚地回答。 -
我喜欢标题 load() - 不加载 XD
标签: javascript jquery html jsp servlets