收到“ XHR加载完成”消息后执行功能

时间:2019-07-04 20:27:33

标签: javascript ajax xmlhttprequest

菜鸟问题。我正确吗? XML HttpRequest完成后,控制台中将显示“ XHR完成加载”,对吗? 因此,如果我想在XML HttpRequest完成后执行一个函数,我应该能够像

一样使用.ajaxComplete()
$( document ).ajaxComplete(function(){
    console.log("complete");
});

因此,只要XML HttpRequest完成,“完成”应该出现在控制台中吗? 我已经尝试使用.ajaxComplete,.ajaxSuccess和.ajaxStop进行此操作,但是没有结果。

2 个答案:

答案 0 :(得分:0)

XML HttpRequest没有名为ajaxComplete()的回调;

您可以在此处https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

查看XML HttpRequest的文档。

答案 1 :(得分:0)

  

因此,只要XML HttpRequest完成,就可以

不。这是jQuery method,仅适用于jQuery ajax请求(例如,使用jQuery.ajaxjQuery.post发出的请求)。

在此演示中,您可以看到它仅触发ajaxComplete回调一次。

const url = 'https://dog.ceo/api/breeds/image/random';

$(document).ajaxComplete(function() {
  console.log("ajaxCompleteCalled");
});

$.ajax(url).then(data => console.log("jQuery ajax done"));

fetch(url).then(response => console.log("Fetch ajax done"));

const x = new XMLHttpRequest();
x.open("GET", url);
x.addEventListener("load", e => console.log("XHR ajax done"));
x.send();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

没有等效的浏览器内置API(XMLHttpRequest或访存)。为它们编写包装函数。