发布包含 ajax 和未知表单字段的表单

Posting a form with ajax and unknown form fields

使用 jQuery 使用 ajax.

将数据 post 发送到服务器非常简单

是否有 jquery 函数来 post 一个使用表单名称的表单并像其他传统方式一样从服务器接收状态 ajax post 来电。

但是,如果我们只是想 post 表单的名称或 ID 并且当我有一组未知的表单字段时怎么办?

我喜欢做的是在页面上获取表单,然后提交表单和当前数据

查看示例代码:

HTML

<form name='myform'>
    <input type='hidden' value='1' name='somefield'>
    <input type='hidden' value='2' name='somefield2'>
    <input type='hidden' value='3' name='somefield3'>

</form>

<a href='#' class='postform' form_name='myform'>post using ajax</a>

JS

$('.postform').click( function() {

    form_name = $(this).attr('form_name');

    postto = 'http://mysite-endpoint.com/api';

    form = $(form_name).submit(postto).done(function(data)
    {
        var ndata = jQuery.parseJSON(data);

        if(ndata.status=='error')
        {
            //display error
        }

        if(ndata.status=='success')
        {
            //looks good
        }
    });

    return false;
});

您可以使用jQuery $.serialize() 将表单标记化并根据表单属性提交。像这样:

$('#someform').submit(function(ev) {
    ev.preventDefault();
    var $form = $(this);

    $.ajax($form.attr('action'), {
        type: $form.attr('method') || 'get',
        data: $form.serialize(),
    }).then(function() {
        alert('success');
    }, function() {
        alert('error');
    });
});

Here's a fiddle.