我正在尝试使用以下代码在本地提交表单:
$('#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 - 也许重命名该文件 - 并让该页面处理所有表单输入并返回/打印"答案"。最终结果将是一个感觉响应更快的页面,而无需任何页面加载/重定向来处理提交。
您是否需要完整路径?为了可读性,我缩短了它,如果当前页面位于同一目录中,您可以这样做 - 它可能不是。