request.getParameter()方法返回带有ajax调用的null

时间:2014-11-19 03:59:23

标签: jquery ajax jsp servlets

我试图在servlet中使用ajax调用调用doPost方法,但request.GetParameter(textboxID)返回null值。调用doPost方法但每次都打印为null。下面是我的jsp和servlet。我已经工作了几个星期但还没弄明白什么是错的。任何帮助都非常感谢。

JSP:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<script src="/javascript/basic.js"></script>
<script src="javascript/jquery-1.11.1.js"></script>
<script>
     $(document).ready(function() {
        $("#btnSubmit").click(function(e) {
            alert("jquery invoked");
            $.ajax({
                url : 'myservlet',
                type : 'GET',
                dataType : 'json',
                data : $("form").serialize,
                success : function(data) {
                    if (data.isValid) {
                        $('#output').html(data.filePath2);
                        $('#output').slidedown(499);
                    } else {
                        alert('Data is not valid!');
                    }
                }
            });
            return false;
        });     
    });  
</script>
<body>
    <form>
        <input type="text" id="txtFilepath"  name="txtFilepath"/> <br>
        <input type="Submit" id="btnSubmit" value="Submit">
    </form>
    <p id="output"/>
</body>
</html>

的servlet

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    Map<String, Object> map = new HashMap<String, Object>();
    // TODO Auto-generated method stub
    String filepath = request.getParameter("txtFilepath");
    System.out.println(filepath);

    map.put("isValid", true);
    map.put("filePath2", filepath);
    write(response, map);
}

private void write(HttpServletResponse response, Map<String, Object> map)
        throws IOException {
    // TODO Auto-generated method stub
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(new Gson().toJson(map));
}

3 个答案:

答案 0 :(得分:2)

您正在servlet中实现POST并从jQuery ajax调用GET。尝试在javascript函数中使用type:'POST'代替type:'GET'

希望这有帮助!

答案 1 :(得分:1)

您在序列化电话中缺少括号:

data : $("form").serialize()

答案 2 :(得分:1)

将此doGet()方法添加到您的servlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 

doPost(request,response);

}

在jquery中,您应该将此data : $("form").serialize更正为 data : $("form").serialize()

.serialize()是一种方法。

最重要的一点是<input type="Submit" id="btnSubmit" value="Submit">应该是

<input type="Button" id="btnSubmit" value="Submit">,Button应为Button类型,而不是Submit类型。如果类型为Submit,它将始终失败。

OR

在Ajax调用e.preventDefault()之前添加以下行,它将取消提交按钮的默认行为。

所以它应该是

$("#btnSubmit").click(function(e) {

        e.preventDefault();

        alert("jquery invoked");
        $.ajax({... Rest of the code