我有一个用例,在将表单提交到其操作目标之前,将表单提交数据发送到不同的服务器。 因此,我需要延迟表单提交,直到收到来自AJAX请求的响应。
我的限制是我不能使用jQuery函数,因为我正在为产品开发自己的库集,这必须足够精简。
现在,我可以使用jQuery在表单上执行类似unbind(“submit”)事件的操作,可以在AJAX函数中调用它作为回调。但同样,我的选择有限。
我当前的表单跟踪代码如下:
form.onsubmit = function() {
event.preventDefault();
var url = "/lead/track/trackId/" + trackId;
var data = {};
for (var prop in fields) {
data[prop] = document.getElementsByName(prop)[0].value;
}
data['planId'] = planId;
data['visitorId'] = visitor_id;
var http_request = new XMLHttpRequest();
http_request.onreadystatechange = function(){
if (http_request.readyState == 4 )
{
setTimeout(function() {document.forms[0].submit();}, 0);
}
}
event.preventDefault()完全删除了提交操作。如果我删除此行,表单将转到提交而不等待AJAX响应。 document.forms [0] .submit()也没有帮助。它没有接收表单对象,并显示“对象不是函数”。这可能是因为此代码是从远程文件异步加载的。
已经看过多个jQuery替代品。所以,我需要一个特别需要基于Javascript的原生解决方案。 感谢