炫意html5
最早CSS3和HTML5移动技术网站之一

改写一下下面的两个函数

function n(e, n) {
// e 请求的方式 ;
// n 请求的地址
var i = new XMLHttpRequest;
return "withCredentials"  in i ?   i.open(e, n, !0) : "undefined" != typeof XDomainRequest ? (i =new XDomainRequest, i.open(e, n)) : i = null, i
}
function i(e, n, i, t) {
return void 0 != e && (void 0 == i && (i = e.sendFinishedCallback), void 0 == t && (t = e
.sendErrorCallback)), n.onreadystatechange = function() {
n.readyState === XMLHttpRequest.DONE && 200 === n.status ? i(n.responseText) : n.readyState ===
XMLHttpRequest.DONE && t(n.responseText)
}, n
}

把这两个函数改写的简单易懂,最好有注释。

回答

函数1:

// 这是一段兼容 IE 的发 Ajax 请求的函数
function request(method, url) {
  // e 请求的方式 ;
  // n 请求的地址
  var xhr = new XMLHttpRequest();
  if ("withCredentials" in xhr) {
    return xhr.open(method, url, true);
  }
  if ("undefined" != typeof XDomainRequest) {
    xhr = new XDomainRequest();
    return xhr.open(method, url);
  }
  xhr = null;
  return xhr;
}
/**
 * 这是处理异步请求响应的一个函数
 * @param defaultHandlers 默认的处理函数
 * @param xhr 请求对象
 * @param finishCallback 成功的callback
 * @param errorCallback  异常的callback
 * @returns
 */
function hanldeXhrResponse(
  defaultHandlers,
  xhr,
  finishCallback,
  errorCallback
) {
  // 如果处理函数为空,则采用默认值
  if (defaultHandlers != undefined) {
    if (finishCallback == undefined) {
      finishCallback = defaultHandlers.sendFinishedCallback;
    }
    if (errorCallback == undefined) {
      errorCallback = defaultHandlers.sendErrorCallback;
    }
  }

  // 监控请求的状态变化
  xhr.onreadystatechange = function () {
    // 完成且成功
    if (xhr.readyState === XMLHttpRequest.DONE && 200 === xhr.status) {
      finishCallback(xhr.responseText);
    } else {
      // 仅仅是完成
      if (xhr.readyState === XMLHttpRequest.DONE) {
        errorCallback(xhr.responseText);
      }
    }
  };

  return xhr;
}

炫意HTML5 » 改写一下下面的两个函数

Java基础教程Android基础教程