【问题标题】:How to get parameters in servlet from ajax request? [duplicate]如何从 ajax 请求中获取 servlet 中的参数? [复制]
【发布时间】:2015-08-17 22:14:29
【问题描述】:

这是客户端代码:

function save(calc){
    var request = new XMLHttpRequest();

    request.open("POST","/Calculator/Controller?action=saveCalc",true);
    //request.send("calc=calc")   ---this does not work also
    request.send(calc);
}

这是 servlet:

if (action.equals("saveCalc")) {
        String parameter = request.getParameter("calc");
        System.out.println(parameter);
}

这里的参数是null...

我也试过这样:

function save(calc){
        var request = new XMLHttpRequest();
        request.open("POST","/Calculator/Controller?action=saveCalc",true);
        var data = new FormData();
        data.append('calc', 'calc');
        request.send(data);
    }

也不行。

如何获得这个 .... 参数。 :D

我成功了。这是解决方案: - 内容类型 ...

function save(calc){
    var request = new XMLHttpRequest();
    request.open("POST","/Calculator/Controller?action=saveCalc",true);
    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    request.send("calc=" + calc);
}


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

        String action = request.getParameter("action");

        if (action.equals("saveCalc")) {
            String calc = request.getParameter("calc");
            System.out.println(calc);
        }
}

【问题讨论】:

    标签: java ajax servlets


    【解决方案1】:

    首先你做错了,因为来自 GET 的参数通过 URL 传播,所以如果你使用 POST 并通过 URL 发送参数,这不应该在请求中传播,POST 意味着参数通过请求正文传播,所以你必须这样做:

    var form = document.getElementById('subscribe_frm');
    form.setAttribute("method", method);
    form.setAttribute("action", path);
    form.submit();
    

    你可以先创建属性。

    让您的代码正常工作的另一种方法是:

    request.open("GET","/Calculator/Controller?action=saveCalc",true);
    

    将 POST 移至 GET

    【讨论】:

    • 我想将数据发布到服务器,然后保存到数据库中。更合乎逻辑的是使用 post 比 get 你不觉得吗?此外,即使我使用 GET,servlet 中的参数也是 null ........
    • 是的,在这种情况下最好使用POST,我不知道你的意图。我认为你最好从你的 servlet 中发布剩余代码,你是如何获得“动作”的,你是否使用 doPost 方法,请粘贴代码以更好地帮助你?
    【解决方案2】:

    获取表单数据

      var parameter = $("input#CountryVal").val();
       dataString = "calc=" + parameter ;
    

    进行 Ajax 调用

     $.ajax({
                    type: "POST",
                    url: "/Calculator/Controller?action=saveCalc",
                    data: dataString,
                    dataType: "json",
    
                    //if received a response from the server
                    success: function( data, textStatus, jqXHR) {...}
    

    【讨论】:

    • 它不起作用............即使使用 get 或 post HttpServletRequest.getParameter("calc") 给我 NULL
    猜你喜欢
    • 2011-08-27
    • 1970-01-01
    • 2011-11-02
    • 2012-02-16
    • 1970-01-01
    • 2020-11-28
    • 2021-08-11
    • 2023-03-26
    相关资源
    最近更新 更多