我已经开始使用servlet进行AJAX,但我的第一个程序无效。这是代码:
<form action="./ajax" method="get" id="myAjaxRequestForm">
<input type="text" name="name" id="name" />
<input type="text" name="email" id="email" />
<textarea rows="5" cols="20" name="address" id="address"></textarea>
<input type="submit" id="myButton" value="Register" />
</form>
$(document).ready(function(){
$('#myButton').click(function(event){
alert();
var name = $('#name').val();
var name = $('#email').val();
var name = $('#address').val();
$.ajax({
type: "GET",
url: 'ajax',
data: "name = " +name+ "&email="+email+"&address"+address,
success: function(msg){
alert("Success");
},
error: function(e){
alert("Error");
}
event.preventDefault();
});
});
});
public class ajax extends HttpServlet
{
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
String name = req.getParameter("name");
String email = req.getParameter("email");
String address = req.getParameter("address");
System.out.println(name);
System.out.println(email);
System.out.println(address);
PrintWriter p = res.getWriter();
p.println("success");
}
}
此程序必须显示带有成功或失败消息的弹出窗口,但它会重定向到带有servlet消息的页面。它没有显示弹出窗口。 使用XML文件时我没有问题。
答案 0 :(得分:1)
你有几个问题。首先,您要将所有输入的值分配给name
变量而不是它们自己的变量。无论如何,手动创建这些变量都是多余的,因为您无论如何都可以使用serialize()
上的form
方法。
其次,preventDefault()
调用应该在您提供给click
处理程序的匿名函数内,而不是在$.ajax
设置对象中。
最后,您应该挂钩表单的submit事件,而不是提交按钮的click事件。试试这个:
$('#myAjaxRequestForm').submit(function(event) {
event.preventDefault();
$.ajax({
type: "GET",
url: 'ajax',
data: $(this).serialize(),
success: function(msg){
console.log("Success");
console.log(msg);
},
error: function(e){
console.log("Error");
}
});
});
最后提示;始终使用console.log
进行调试。 alert()
强制所有类型为字符串,因此您可能看不到正确的数据。