AJAX表单不发送,没有错误代码

时间:2017-03-22 20:58:10

标签: javascript ajax

这是一个非常令人沮丧的问题,我使用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请求的反馈很难处理,是使用定时器的唯一解决方案是继续检查连接吗?

1 个答案:

答案 0 :(得分:1)

您需要在 onreadystatechange之前添加send 。否则readystate可能会在定义处理程序之前发生更改,因此它不会检测到该事件。成功的send可能至少花费一点时间来异步完成,但本地失败的send可能会同步失败,因此您不会看到错误。