通过 AJAX 动态创建和提交表单


Create and submit a form dynamically via AJAX

我有一个带有编辑链接的喊话箱。单击(下面的代码)时,它会提示编辑帖子,然后在提交时动态创建一个表单并将表单提交到另一个页面进行处理。

最初,另一个页面将处理它并重定向回用户所在的页面。但是,我已经改变了我的喊话箱的显示方式。

我想做的是动态创建表单,但不是将其提交到另一个页面(它实际上将我带到浏览器中的操作页面,我想使用 AJAX 提交表单,以便我永远不会离开我当前所在的页面。

所以基本上我可以在主页上,编辑一个帖子,然后当我确认编辑时,我应该留在主页上,然后表单将在后台通过 AJAX 处理,并且 shoutbox 容器将被重新加载(而不是页面本身)。

$('span.edit a').click(function (event) {
    event.preventDefault();
    var id = $(this).attr('id');
    var url = $(this).attr('href');
    var new_post = prompt('', $('#shoutbox_comment_' + id).html());
    if (new_post != '' && new_post != null && new_post != $('#shoutbox_comment_' + id).html()) {
        var form = $(
            '<form action="' + url + '" method="post">' +
            '<input type="hidden" name="comment" value="' + new_post + '">' +
            '<input type="hidden" name="id" value="' + id + '">' +
            '<input type="submit">' +
            '</form>');
        $('body').append(form);
        $(form).submit();
        $('#shoutbox_container').load('../../website/inc/views/shoutbox/shoutbox.php?p=' + $(this).parent().attr('id'));
    } else if (new_post != null) {
        alert("Your post could not be edited. Make sure that your comment is not blank and that you've made changes.");
    }
});

我已经得到了删除链接的 AJAX 很好,但由于帖子数据的表单,我在弄清楚如何在后台提交它时遇到了问题。

其实,我搞清楚了!><</p>

$('span.edit a').click(function (event) {
    event.preventDefault();
    var id = $(this).attr('id');
    var url = $(this).attr('href');
    var new_post = prompt('', $('#shoutbox_comment_' + id).html());
    if (new_post != '' && new_post != null && new_post != $('#shoutbox_comment_' + id).html()) {
        var form = $(
            '<form action="' + url + '" method="post">' +
            '<input type="hidden" name="comment" value="' + new_post + '">' +
            '<input type="hidden" name="id" value="' + id + '">' +
            '<input type="submit">' +
            '</form>'
        );
        $('body').append(form);
        $.ajax({
            type: 'post',
            url: url,
            data: form.serialize()
        });
        $('#shoutbox_container').load('../../website/inc/views/shoutbox/shoutbox.php?p=' + $(this).parent().attr('id'));
    } else if (new_post != null) {
        alert("Your post could not be edited. Make sure that your comment is not blank and that you've made changes.");
    }
});