Ajax Post请求Servlet?

时间:2015-03-18 12:17:11

标签: java jquery ajax servlets

您好我一直在尝试将值从ajax传递给servlet,使用了JQUERY jquery-1.3.2& query-1.3.2.min。我能成功发送数据但是如果我打印servlet中的值为null

这是我的js事件

    <script type="text/javascript" src="js/jquery-1.3.2.js"></script>
    <script type="text/javascript" src="js/myjquery.js"></script>
    <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
    <script type="text/javascript" >


    function AddNext(event)
    {
       MQA.EventManager.addListener(map, 'click', AddNext);
        var lata = event.ll.getLatitude();
        var lnga = event.ll.getLongitude();

        var latlon=lata+"|"+lnga;
        addpasslatlon(latlon);
        MQA.EventManager.clearAllListeners( map);
        exit();
      };   

myjquery.js -

    function addpasslatlon(latlon) 
    {           
           var value=latlon;
           $.ajax({
             url:'insertPos',
             type:'POST',
             data:value,
             success : function(data){
                 alert('success'+data);
             }
           });
    }

我的servlet类 -

    public class InsertPos extends HttpServlet {
        private static final long serialVersionUID = 1L;


        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();

            String a =request.getParameter("value");
            System.out.println(a);
        }

    }

的web.xml -

    <url-pattern>/insertPos</url-pattern>

O / P-      null

2 个答案:

答案 0 :(得分:2)

您必须在数据中发送对象:

data:{value : value},
//----^^^^^-------------this is the key which you refered in your servlet.

在您的后端,您应该使用当前正在执行的密钥value来获取它。

答案 1 :(得分:0)

你应该运行一个简单的测试,让你看看你有哪些参数,你可以使用getParameterMap()返回一个Map对象:

System.out.println(request.getParameterMap());

这将使用地图的键值对打印出所有可用参数,所以接下来当您知道地图中的所有键以及它们映射到的值时,您可以调用它,就像您已经尝试过的那样,时间你将确信该值已作为参数的一部分存在:

request.getParameter("<insertKeyHere>");

Jai所做的是他向您展示了如何将JSON对象传递给servlet

  

数据:{value:value},

这对servlet非常有用,因为它可以轻松地将其解析为参数映射。

这个问题是你不想声明一个完整的JSON字符串你自己...它对一个或两个值很好,但绝对不适用于更大的对象。

你可能想要使用的是将所有对象转换为JSON的javascript函数,你可以将它添加到你的ajax调用中,它会起作用:

data: JSON.stringify(value),