这是一个非常令人沮丧的问题,我使用iFrame方法将表单发送到隐藏的iFrame,这样可以在不离开页面的情况下发送数据,这一切都有效,但有时表单不会发送。这发生在所有网络位置,看起来是随机的。
所以我刚刚更改了代码以使用发送表单的AJAX方法,并且发生了完全相同的事情,我可以在表单之后发送表单,大约20分之一只是不工作。
var formElement = document.querySelector("#myform");
var request = new XMLHttpRequest();
request.open("POST", "php/upload.html");
request.send(new FormData(formElement));
request.onreadystatechange = function() {
console.log(request.readyState);
console.log(request.status);
};
因此代码非常简单,为了成功上传所有状态都会被报告,但是当它出错时绝对没有记录任何状态。我还在表单目标页面上发送了一封电子邮件通知,当问题发生时,这不会被发送。所以我知道什么时候出错,页面根本就没有被调用。
这里最好的解决方案是什么,没有来自AJAX请求的反馈很难处理,是使用定时器的唯一解决方案是继续检查连接吗?
答案 0 :(得分:1)
您需要在 onreadystatechange
之前添加send
。否则readystate
可能会在定义处理程序之前发生更改,因此它不会检测到该事件。成功的send
可能至少花费一点时间来异步完成,但本地失败的send
可能会同步失败,因此您不会看到错误。