我一直在将数据从HTML发送到我的servlet:
<form Action="http://caregap2.appspot.com/src.main.java.org.deri.hcls.caregap2.client" Method="GET">
Username: <input type="text" name="username" size="20" value="@gmail">
<BR>
<input type="submit" VALUE="submit">
<input type="reset" value="reset">
</form>
将变量Username发送到servlet。但是我不想点击提交来发送数据,我想发布数据并加载servlet而不点击任何内容。我试过这个:
$(document).ready(function() {
var username = "matthewgortnalon@gmail.com";
$.ajax({
type: "POST",
url: "http://caregap2.appspot.com/src.main.java.org.deri.hcls.caregap2.client",
data: { username: "username" }
}).done(function( msg ) {
// alert( "Data Saved: " + username );
window.location = "http://caregap2.appspot.com/src.main.java.org.deri.hcls.caregap2.client?q=" + username;
});
});
但它不起作用,任何人都可以看到我做错了什么?或者,如果我应该使用不同的方法?帮助真的很感激!! :)
这是我的servlet方法:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");{
ServletOutputStream out = response.getOutputStream();
try {
out.println("<html><head><title>" + "</title></head>");
out.println("<body><h1>" + "</h1>");
String name = request.getParameter("username" );
//String comment = request.getParameter( "comment" );
out.println("Name:" + name + "<BR>");
//out.println("Comment: " + comment + "<BR>");
}
catch(Throwable t ) {
out.println("<P><pre>");
t.printStackTrace( new PrintStream(out) );
out.println ("</pre><P>");
}
out.println ("</body></html>");
}
答案 0 :(得分:3)
您的JSON数据错误:
data: { "username": username }
首先是键,而不是值(变量)
答案 1 :(得分:2)
您的表单似乎正在使用GET
请求,而您的ajax正在执行POST
请求。您的服务很可能正在查找GET
个参数。更改ajax请求以使用GET
而不是POST
答案 2 :(得分:2)
好的,我想我知道你在尝试做什么。 AJAX请求不是你想要的。根据我的理解,您正在尝试加载一个servlet并显示它而不需要与您的页面进行交互。
您需要做的就是在javascript中执行以下操作
var username = "you username here";
window.location = "http://caregap2.appspot.com/src.main.java.org.deri.hcls.caregap2.client?username=" + username;
使用ajax请求会将servlet主体返回到done方法,这对于在不重新加载的情况下显示当前页面上的信息非常有用。
您目前正在做的是将servlet响应正文附加到查询的末尾,并因此重定向到错误的位置。
额外信息:使用Ajax的替代方法是让您的servlet返回一些html但不是必须整页,然后使用此响应来填充当前页面的一部分。