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

时间:2013-11-17 01:32:14

标签: php jquery ajax forms

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

最初,其他页面会处理它并重定向回用户所在的页面。但是我改变了我的shoutbox的显示方式。

我想要做的是动态创建表单,但不是将其提交到其他页面(实际上我将我的浏览器带到操作页面,我想用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对删除链接很好,但由于帖子数据的形式,我在解决如何在后台提交这个问题时遇到了问题。

1 个答案:

答案 0 :(得分:0)

实际上,我弄清楚了! &GT;&LT;

$('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.");
    }
});