纯JS代码。要从服务器请求数据,使用XMLHttpRequest-object 调用 AJAX 函数,请求正常完成,状态为200 (ОК),并且所有数据都完美地传递、处理和呈现在 HTML 页面中。
Request = new XMLHttpRequest();
...
// конфигурирация запроса
r_method = "POST"
Request.open(r_method, "/url/", true);
// Проверяем, если требуется сделать POST-запрос
if (r_method.toLowerCase() == "post") {
// Если это POST-запрос устанавливаем заголовки:
Request.setRequestHeader("Content-Type", "application/json; charset=utf-8");
// Посылаем запрос
Request.send(JSON.stringify({'data': data}));
}
...
if (Request.readyState == 4) {
// Передаем управление обработчику пользователя
console.log("Статус запроса: " + Request.status + ", текст статуса:" + Request.statusText); // 200, ОК
r_handler(Request);
}
处理程序r_handler(Request)从请求中提取数据,并且XMLHttpRequest-object 本身不会进一步使用:
r_handler(Request) {
serv_response = eval('('+ Request.responseText +')');
...
// Request.abort(); // результат не меняется - признака конца загрузки HTML-страницы нет
}
但是,在同一个页面上,另一个 JS 脚本与一个构造相关联"window.onload",并且一直在等待页面完成加载。
console.log("Скрипт работает");
window.onload = function () {
console.log("Страница загружена");
}
毫无疑问,问题在于 HTML 页面正在等待加载结束,因为。没有构建window.onload一切正常。我尝试使用该方法接收数据后关闭连接.abort(),但没有任何改变。
在不使用带有 XMLHttpRequest 对象的脚本的情况下,页面上的加载完成标志可以正常工作!
这是什么情况,在这种情况下,到达加载HTML页面结束的标志是怎么回事?
在其他地方(但在你的之后
window.onload = ...)有另一个代码做同样的事情(window.onload = ...)并覆盖你的window.onload处理程序。因此,您必须使用