在表单提交之前发送Ajax请求

shi*_*ter 5 html javascript

是否可以在表单的onsubmit()中发送ajax请求?我一直在尝试它并且结果是不稳定的,主要是因为可能如果浏览器发送我的请求比发送原始表单需要更长时间,我的请求会在加载页面的位置发生变化时被丢弃,所以有时它从来没有打到服务器.

基本上,我想要做的是添加一个收集登录事件的审计日志收集器,我想以最小的入侵将其挂钩到现有的应用程序.

Jam*_*ore 18

这很容易实现.只需暂停表单提交,直到AJAX请求完成.

使您的表单onsubmit属性调用AJAX函数并返回false(取消表单提交).当您的AJAX调用完成后,以编程方式提交表单.

例如:

<form name="myform" onsubmit="javascript: startAjax(); return false;">
...
<script type="text/javascript">
function startAjax() {} // Calls ajaxComplete() when finished

function ajaxComplete()
{
  document.myform.submit();
}
</script>
Run Code Online (Sandbox Code Playgroud)