Jquery Ajax调用servlet

时间:2012-06-04 10:24:44

标签: ajax jsp servlets

我正在尝试使用JQuery对返回JSON对象的servlet进行Ajax调用。 在JSP页面中我有一个表单,起初我不知道如何从表单中获取数据, 然后我找到了.serialize。

我有以下JavaScript:

$(document).ready(function() {
    $("#submit").click(function blabla() {
        var formData = $('form').serialize();
        $.ajax({
            type: "POST",
            url: "/ArchiveSearch/Search",
            dataType: "json",
            data: formData,
        });
    });
});

信息来自以下表格:

<form method= post">
            <div class="searchCiteria">
                <div id="searchValueBlock1">
                        <div><span class="label">Case ID:</span><input type="text" name="messagecaseid"  size="25"/></div>
                        <div><span class="label">Onderwerp:</span><input type="text" name="messagesubject" size="25" /></div>
                        <div><span class="label">Afzender:</span><input type="text" name="messagesender"  size="25"/></div>
                        <div><span class="label">Ontvanger:</span><input type="text" name="messagereceiver"  size="25"/></div>
                </div>

                <div id= "searchValueBlock2">
                    <div><span class="label">Datum:</span><input type="text" name="date1"  size="25"/></div>
                    <div><span class="label"></span><input type="text" name="date2"  size="25"/></div>

                    <div class="submit">
                        <input type="submit" value="Search"> 
                    </div>
                </div>
            </div>
            </form>

当我在表单中使用action参数时,servlet会像它应该的那样响应。 但我似乎无法让Ajax调用工作。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您必须将成功参数添加到ajax函数

$.ajax({
            type: "POST",
            url: "/ArchiveSearch/Search",
            dataType: "json",
            data: formData,
 success: function(data) {
    $('.result').html(data);
    alert('Load was performed.');
  }
});

答案 1 :(得分:1)

提交按钮的默认行为是POST表单,该表单会将用户重定向到表单上action属性的URL。当你没有(你应该......)有一个动作属性时,它将重新加载页面。要阻止页面重新加载,您需要在false函数末尾返回$("#submit").click来阻止默认行为。