将序列化JSON提交到Servlet

时间:2014-07-30 00:52:54

标签: json servlets

我可以成功序列化表单并将其提交到表单中的文本区域,但不知道如何将其发送到我已经创建/定义的Servlet:

// Prepare form for Serialize
$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

// Send JSON Data to ResultSet
$(function() {
    $('form').submit(function() {
        //submitting to textarea "resultset"
        //needs to submit to servlet "SftpConnTest" as defined in web.xml
        //$('#ResultSet').text(JSON.stringify($('form').serializeObject()));        

        //?? HOW DO I SEND TO "SftpConnTest" SERVLET instead??

       return false;
    });
});

2 个答案:

答案 0 :(得分:0)

假设您使用HTTP POST将其发送到servlet,您可以使用ajax:

$(function() {
    $('form').submit(function(evt) {
        evt.preventDefault(); // prevent the default form submit behavior
        var data = $('form').serializeObject();
        $.post(
            '/',
            data,
            function(resData, status, req) {
                $('#ResultSet').text(JSON.stringify(resData));
            }
        );
    }
}

如果未将servlet映射到位于Web应用程序的根目录,请将'SftpConnTest'函数中的$.post替换为servlet的相对路径。例如,如果servlet映射到/foo/bar/SftpConnTest,那么您应该'/foo/bar/SftpConnTest'而不是'SftpConnTest'

有关$.post功能的详细信息,请参阅jQuery docs

答案 1 :(得分:0)

使用以下命令通过ajax将表单数据发送到服务器:

$.post("path/to/servlet", $("#formId").serializeArray(), function (result) {
    // do something
});

顺便说一下:

serializeArray()会将表单转换为数组,该数组可以直接用作jquery ajax请求的“data”参数,只包含表单中具有name属性的元素进入数据,详情请查看jquery api,这里很清楚。