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

时间:2012-04-12 11:41:20

标签: php javascript jquery form-submit

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

$('#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,但第二次和之后的每次都会填充。

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

谢谢!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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 - 可能重命名该文件 - 并让该页面处理所有表单输入并返回/打印'答案”。最终结果将是一个感觉响应更快的页面,没有任何页面加载/重定向来处理提交。

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