javascript ajax request without framework

前端 未结 2 863
一向
一向 2020-12-01 22:36

Does anyone know how to make ajax request function that works cross-browser WITHOUT using a javascript framework like jQuery, etc.?

2条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-01 22:53

    The XMLHttpRequest object isn't actually all that complicated to use. To be broadly compatible, you have to play a bit of a game to create the object, but after that it's fairly straightforward for simple operations.

    Microsoft has examples on the MSDN page for XMLHttpRequest, including a function for creating the object in a cross-browser way that supports early versions of IE. Here's their example:

    function getXMLHttpRequest() 
    {
        if (window.XMLHttpRequest) {
            return new window.XMLHttpRequest;
        }
        else {
            try {
                return new ActiveXObject("MSXML2.XMLHTTP.3.0");
            }
            catch(ex) {
                return null;
            }
        }
    }
    
    function handler()
    {
        if (oReq.readyState == 4 /* complete */) {
            if (oReq.status == 200) {
                alert(oReq.responseText);
            }
        }
    }
    
    var oReq = getXMLHttpRequest();
    
    if (oReq != null) {
        oReq.open("GET", "http://localhost/test.xml", true);
        oReq.onreadystatechange = handler;
        oReq.send();
    }
    else {
        window.alert("AJAX (XMLHTTP) not supported.");
    }
    

    I'm not suggesting the above exemplifies best practices (Microsoft seems to have their MSDN examples largely written by very, very inexperienced engineers), but it gives you a starting point. For instance, the above requires that the response status be 200 for success, where of course the HTTP specification is clear that anything the 200 <= n <= 299 range is "success".

提交回复
热议问题