Javascript – XMLHttpRequest to string

javascriptxml-serializationxmlhttprequest

I'm trying to make a function that sends an XMLHttpRequest and return a string with the contents of the response, but it always returns null. How do I fix this?

Code:

function getPage() {
    if (window.XMLHttpRequest)
    {
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
        xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
    }
    xmlhttp.open('GET','page.php',false);
    xmlhttp.send();
    xmlDoc = xmlhttp.responseXML;
    if ($.browser.msie) return xmlDoc.xml;
    else return (new XMLSerializer()).serializeToString(xmlDoc);
}

Best Answer

If you are using Internet Explorer, at least, then you may have a null response because the ContentType header in the response is missing or incorrect. Quoting Microsoft's documentation on the responseXML property:

If the ... Multipurpose Internet Mail Extension (MIME) type was not correctly set to one of the supported MIME types ... then responseXML will be empty.

The supported MIME types for MSXML 6.0 are: "text/xml", "application/xml" or anything that ends with "+xml", for example "application/rss+xml".

The supported MIME types for versions prior to MSXML 6.0 are: "text/xml", "application/xml".