returning xmlhttp responseText from function as return [duplicate]
You can't.
Neither runs the code syncronous, nor would you return
anything to loadXMLDoc
but to the anonymous function which is the onreadystatechange handler.
Your best shot is to pass a callback function.
function loadXMLDoc(myurl, cb) { // Fallback to Microsoft.XMLHTTP if XMLHttpRequest does not exist. var xhr = (window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP")); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { if (typeof cb === 'function') cb(xhr.responseText); } } xhr.open("GET", myurl, true); xhr.send();}
And then call it like
loadXMLDoc('/foobar.php', function(responseText) { // do something with the responseText here});
Just return the responseText property or assign its value to a variable in closure.
Returning a value:
<script> function loadXMLDoc(myurl) { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { return xmlhttp.responseText; } } xmlhttp.open("GET", myurl, true); xmlhttp.send(); return xmlhttp.onreadystatechange(); }</script>
Using a closure:
<script> var myValue = "", loadXMLDoc = function (myurl) { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { return xmlhttp.responseText; } } xmlhttp.open("GET", myurl, true); xmlhttp.send(); myValue = xmlhttp.onreadystatechange(); };</script>