onreadystatechange回调是否总是会收到一个事件参数?

时间:2016-08-23 13:52:35

标签: javascript xmlhttprequest

MDN docs他们的onreadystatechange回调示例中没有收到参数

var xhr = new XMLHttpRequest(),
    method = "GET",
    url = "https://developer.mozilla.org/";

xhr.open(method, url, true);
// no param!
xhr.onreadystatechange = function () {
        if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
// the response would be found on the xhr instance
            console.log(xhr.responseText);
        }
    };
xhr.send();

但是,我看到elsewhere响应将在传递给回调的事件参数中找到

xmlHttpRequest.onreadystatechange = function (event) {
    var xhr = event.target;

    if (xhr.readyState === 4 && xhr.status === 200) {
        document.getElementById("target").innerHTML = xhr.responseText
    }
};

我遇到过一些父对象很重要的边缘情况。在某些情况下,onreadystatechange回调参数没有responseText属性,但xml实例没有。

问题:

  1. 标题是否与此差异有关?

  2. 是否存在从callback参数或xml实例访问responseText属性的规范,无懈可击的方法?添加检查两个对象的逻辑会很容易,但我想知道是否需要在xmlhttpreq实例上设置一些选项。

0 个答案:

没有答案