来自Jquery Ajax的getparameter调用

时间:2016-02-17 13:22:54

标签: javascript jquery jsp servlets

这些天我正在学习Jquery,并对提交数据表示怀疑。让我们考虑下面的例子

JSP:

<body>
<form name="newForm" id="newForm" action="getData" method="get">
<input type="name"/>
<input type="button" onclick="submit()"/>
</form>
</body>

JS:

function submit(){
document.getElementById("newForm").submit();
}

的Servlet

protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
String x = request.getParameter("name");
system.out.println("Received name is "+ x);
}

当我运行上述程序时,控制台会正确打印值。

我使用Jquery运行相同的代码,如下所示。

$(document).ready(function() {
    $("form1").submit(function() {
        $.ajax({
            type : "get",
            url : "getData",
            success : function(msg) {
                $('#header').append("Hi");
            }
        });
        return false;
    });
});

没有任何反应。在这里,我的问题是,我是否必须在data中发送名称,或者它可以像在JavaScript中那样工作,即如果不发送参数,它会选择数据吗?

简单来说,要通过Ajax / Jquery调用从Servlet中的JSP获取参数,我需要强制发送data中的参数。

由于

2 个答案:

答案 0 :(得分:1)

标准表单submit()方法只需通过浏览器提交表单 - 与单击没有点击事件绑定的按钮相同,因此它不会异步提交表单。

对于您的JQuery示例,您需要将“submit”事件绑定到表单,以防止它的默认行为并异步提交表单。

为了在请求中传递与第一个示例相同的数据,您还需要序列化表单。

例如:

$(document).ready(function() {
  $("#newForm").on('submit', function(e){
    $.ajax({
      type: "get",
      url: "getData",
      data: $(this).serialize(),
      success: function(msg) {
        $('header').append("Hi");
      }
    });
    e.preventDefault();
  }).submit();
});

工作小提琴:https://jsfiddle.net/rgh97b6h/1/

答案 1 :(得分:0)

您必须在name代码中指定<input>属性(您还需要指定type属性):

<input type="text" name="name"/>

之后,您将能够在servlet中获取此参数:

String x = request.getParameter("name");

如果没有这个,你的第一个例子也行不通:

Received name is null