Best method of Instantiating an XMLHttpRequest object

前端 未结 9 1349
一生所求
一生所求 2020-12-31 20:43

What is the best method for creating an XMLHttpRequest object?

It should work in all capable browsers.

相关标签:
9条回答
  • 2020-12-31 20:45

    I'd suggest following Sergey's advise or writing a small, less sophisticated patch for IE yourself:

    if(typeof window.XMLHttpRequest === 'undefined' &&
        typeof window.ActiveXObject === 'function') {
        window.XMLHttpRequest = function() {
            try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}
            try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}
            return new ActiveXObject('Microsoft.XMLHTTP');
        };
    }
    

    Then you can do

    var req = new XMLHttpRequest;
    

    even in IE.

    edit 2011-02-18: see this blogpost for the rationale behind the new choice of MSXML versions...

    0 讨论(0)
  • 2020-12-31 20:47

    I go with Cletus's suggestion of jQuery and also check out the jQuery Form plug-in, very powerful and simple to use to quickly convert your forms to work via Ajax.

    0 讨论(0)
  • 2020-12-31 20:50

    For a library-less solution, you can emulate Prototype's use of Try.these fairly easily:

    function newAjax() {
        try { return new XMLHttpRequest();                    } catch(){}
        try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(){}
        try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(){}
        try { return new ActiveXObject('Msxml2.XMLHTTP');     } catch(){}
        try { return new ActiveXObject('Microsoft.XMLHTTP');  } catch(){}
        return false;
    }
    
    0 讨论(0)
  • 2020-12-31 21:00

    Here's a useful link and some code (should cover all bases)

    http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx

            var request = null;
    
            function InitAJAX()
            {
                var objxml = null;
                var ProgID = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Microsoft.XMLHTTP"];            
    
                try
                {
                    objxml = new XMLHttpRequest();
                }
                catch(e)
                {                
                    for (var i = 0; i < ProgID.length; i++)
                    {
                        try
                        {
                            objxml = new ActiveXObject(ProgID[i]);
                        }
                        catch(e)
                        {                        
                            continue;
                        }
                    }
                }
    
                return objxml;            
            }
    
            request = InitAJAX();
    
    0 讨论(0)
  • 2020-12-31 21:00

    function CreateXmlHttpObj() {

    try {
        XmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
        try {
            XmlHttpObj = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (oc) {
            XmlHttpObj = null;
        }
    }
    // if unable to create using IE specific code then try creating for Mozilla (FireFox) 
    if (!XmlHttpObj && typeof XMLHttpRequest != "undefined") {
        XmlHttpObj = new XMLHttpRequest();
    }
    

    }

    0 讨论(0)
  • 2020-12-31 21:08

    Using just about any JavaScript Ajax library is preferable to writing your own Ajax framework -- unless that's the point. You might want to check out the jQuery or Prototype or MooTools or Dojo or [insert name here] framework to see how they do it if you insist on writing your own.

    0 讨论(0)
提交回复
热议问题