0

我正在尝试使用以下代码本地提交表单:

$('#invoices-bundle').submit(function(e) {
    e.preventDefault(); // don't submit multiple times
    this.submit();
    $.post('php/seller/invoice/invoice_print_batch.php', function(data){
        $('#added-invoices').html(data);                                             
    });// use the native submit method of the form element   
});

在提交()之后;我想用我的 PHP 脚本的内容填充 DOM。奇怪的是,我第一次提交表单时没有填充 DOM,但第二次和之后的每次都没有填充。

不知道为什么会这样!有什么建议么?

谢谢!

4

2 回答 2

2

使用 提交表单后 this.submit();,其余代码将无用。页面将被更改或刷新,并且 ajax 代码将被破坏。将表单作为 ajax 发布,而不是常规表单提交或更改代码顺序,放在submit()最后。

于 2012-04-12T11:47:07.827 回答
0

如果您想通过 AJAX 提交,那么为什么要包含“使用本机提交”的评论(这似乎与您的阻止默认设置冲突)?

当您执行 AJAX 帖子时,您似乎不需要执行提交操作——它会立即执行;您是否希望收集 POST 返回值并将它们提供给您的 invoice_print_batch.php 页面?页面上是否还有需要发送的表单元素?填充这些变量并将它们发送到$.post调用的数据参数中。

$('#invoices-bundle').submit(function(e) {
    e.preventDefault(); // don't submit multiple times
    var itemToSend = form.find('input[name="inputsName"]').val();
    // ...more?
    $.post('invoice_print_batch.php', { value: itemToSend }, function(data) {
        $('#added-invoices').html(data);
    });
});

在这里,value将在您的 $_POST 中为 invoice_print_batch.php。

表单的自然提交已被避免,您页面上的值已发送到您的 php 页面,并且该 php POST 的结果可以在您的当前页面上更新。

如果您的真实页面处理发生在当前页面上,您可能希望将处理移动到 invoice_print_batch.php - 可能重命名该文件 - 并让该页面处理所有表单输入并返回/打印“答案”。最终结果将是一个感觉更灵敏的页面,而无需任何页面加载/重定向来处理提交。

你需要有完整的路径吗?为了便于阅读,我缩短了它,如果当前页面在同一个目录中,你可以这样做——它可能不是。

于 2012-04-12T12:19:27.123 回答