0

最近 ajax の学習を始めたばかりで、HttpRequests を作成する方法を研究
しています。これまでに思いついた方法は次のとおりです。

function one() {
if(window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
    alert('Other');
} else if (window.ActiveXObject) {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    alert('windows');
}
return xhr;
}


function two() {
    if(window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
        alert('Other');
    } else if (!window.XMLHttpRequest) {
        xhr = new ActiveXObject('Microsoft.XMLHTTP');
        alert('windows');
    }
    return xhr;
}

function three() {
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
        alert('Other');
    } else {
        xhr = new ActiveXObject();
        alert('windows');
    }
    return xhr;
}

function four() {
    try {
        xhr = new XMLHttpRequest();
        alert('Other');
    } catch (e) {
        xhr = new ActiveXObject();
        alert('windows');
    }
    return xhr;
}

リクエストを作成する方法をもっと知りたいです。誰かがこれを行う他の方法を持っている場合は、それらを共有してください。Javascript について私が気に入っている点の 1 つは、同じタスクを実行する方法がたくさんあることであり、考えられるすべてのオプションを検討するのが好きです。

4

2 に答える 2

1
function four() {
  try {
    return new XMLHttpRequest(); 
  } catch (e) // Catch ReferenceError
    return new window.ActiveXObject("Microsoft.XMLHTTP");
  }
}
于 2012-05-01T14:39:57.993 に答える
1

物事を行うための良い方法を探すとき、私は一般的に jQuery に任せます。

// Functions to create xhrs
function createStandardXHR() {
    try {
        return new window.XMLHttpRequest();
    } catch( e ) {}
}

function createActiveXHR() {
    try {
        return new window.ActiveXObject( "Microsoft.XMLHTTP" );
    } catch( e ) {}
}

// Create the request object
// (This is still attached to ajaxSettings for backward compatibility)
jQuery.ajaxSettings.xhr = window.ActiveXObject ?
    /* Microsoft failed to properly
     * implement the XMLHttpRequest in IE7 (can't request local files),
     * so we use the ActiveXObject when it is available
     * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
     * we need a fallback.
     */
    function() {
        return !this.isLocal && createStandardXHR() || createActiveXHR();
    } :
    // For all other browsers, use the standard XMLHttpRequest object
    createStandardXHR;

ソース

于 2012-05-01T14:37:34.087 に答える