Ajax脚本无法正常工作如何知道对servlet的调用是由ajax完成的

时间:2016-04-03 11:41:14

标签: jquery ajax servlets

我已经开始使用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文件时我没有问题。

1 个答案:

答案 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()强制所有类型为字符串,因此您可能看不到正确的数据。