【问题标题】:Ajax Post request to Servlet?Ajax 向 Servlet 发送请求?
【发布时间】:2015-03-18 12:17:11
【问题描述】:

嗨,我一直在尝试将值从 ajax 传递到 servlet,使用过 JQUERY jquery-1.3.2 和 query-1.3.2.min。我能够成功发送数据,但是如果我在 servlet 中打印值空

这是我的 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- 空

【问题讨论】:

  • jquery-1.3.2.js.....你是认真的吗?
  • 表示我从网上复制并安装在js文件夹中
  • 您不需要在页面上同时包含 jquery-1.3.2.js 和 jquery-1.3.2.min.js,使用其中一个。 jquery-1.3.2.min.js 是 jquery-1.3.2.js 的缩小版,用于快速加载。

标签: java jquery ajax servlets


【解决方案1】:

你必须在数据中发送一个对象:

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

在您的后端,您应该使用密钥 value 来获取它,就像您目前所做的那样。

【讨论】:

  • 非常感谢!!明白了
【解决方案2】:

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

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

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

request.getParameter("<insertKeyHere>");

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

数据:{值:值},

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

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

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

data: JSON.stringify(value),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 2013-12-13
    • 1970-01-01
    • 2011-11-08
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多