本机表单提交后的 ajax $.post 函数


ajax $.post function after native form submission

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

$('#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 在我第一次提交表单时没有被填充,而是第二次和之后的每次。

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

谢谢!

提交带有this.submit();的表单后,其余代码将无用。要更改或刷新的页面以及 ajax 代码之后将中断。使表单发布为 ajax,而不是常规表单提交或更改代码顺序,submit()放在末尾。

如果你想

通过AJAX提交,那么你为什么要包含一个注释来"使用本机提交"(这似乎与你的阻止默认值冲突)?

似乎

在执行 AJAX post 时不需要执行提交操作 - 它会立即执行;您是否希望收集 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 - 也许重命名该文件 - 并让该页面处理所有表单输入并返回/打印"答案"。最终结果将是一个感觉响应更快的页面,而无需任何页面加载/重定向来处理提交。

您是否需要完整路径?为了可读性,我缩短了它,如果当前页面位于同一目录中,您可以这样做 - 它可能不是。