2

我正在尝试使用 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 调用正常工作。

我究竟做错了什么?

4

2 回答 2

1

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

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

于 2012-06-04T10:31:35.767 回答
1

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

于 2012-06-04T10:35:36.287 回答