2

我正在以编程方式创建一个表单并尝试提交它。不过,submit() 函数什么也不做。

$(".deleteLink").click(function(event) {
    event.preventDefault();

    var form = $("<form></form>");
    form.attr("method", "POST");
    form.attr("action", "http://myurl.com");

    form.submit(function() {
        alert('Handler for .submit() called.');
        return false;
    });
});

当我在 Firebug 中设置断点时,我看到 click() 函数被调用并且“form”变量被正确填充。一切正常到 submit() 方法。提交处理程序中的 alert() 方法永远不会被调用。

当调用 submit() 时,jquery.js 中的代码确实会执行,但我很难跟踪它以查看它的作用。

我已经确认页面上没有其他名为“提交”的对象。

有人知道发生了什么吗?

澄清:在没有 function() 参数的情况下调用 submit() 也没有任何作用。

进一步澄清:调用 submit(function(){alert()}) 后跟 submit() 确实调用了 alert(),但表单仍然没有被提交。

另一个澄清:我希望整个页面刷新。我不想做一个ajax提交。

4

4 回答 4

1

您正在附加提交事件处理程序而不是在表单对象上调用提交,使用这个

form.submit();

你的代码是

$(".deleteLink").click(function(event) {
    event.preventDefault();

    var form = $("<form></form>");
    form.attr("method", "POST");
    form.attr("action", "http://myurl.com");

    form.submit(function() {
        alert('Handler for .submit() called.');       
    });
    form.submit();
});
于 2013-04-16T17:59:04.053 回答
1

在提交之前,您必须将新表单注入到文档中:

$("body").append(form);
form.submit();
于 2013-04-16T18:27:37.483 回答
0

调用form.submit()触发提交表单

于 2013-04-16T18:00:03.833 回答
0

你有没有尝试过这样的事情?

$(".deleteLink").click(function(event) {

    event.preventDefault();

    $.post(    
        'http://myurl.com',
        function(){
            alert('success');
            // window.location.href = 'other page';
        }
    );

});
于 2013-04-16T18:07:10.660 回答