Date: 02/15/06 (Javascript Community) Keywords: xml This looks so stupidly simple, but I can't figure it out and it's really holding me up. Using XMLHttpRequest I can make a function to process the contents of another file, but I can't find a way to make a function to return the contents of another file. For example, this works:var xmlhttp; function getFile() { if (xmlhttp) { xmlhttp.open("POST", "file.txt",true); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { alert(xmlhttp.responseText); } } } } window.addEventListener('load',function(ev) { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp=false; } getFile(); }, false);whereas this wont: var xmlhttp; function getFile() { var response = "no data"; if (xmlhttp) { xmlhttp.open("POST", "file.txt",true); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { response = xmlhttp.responseText; } } } return response; } window.addEventListener('load',function(ev){ try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp=false; } alert(getFile()); }, false); It's obviously a race condition - as XMLHttpRequest runs as a seperate thread the getFile() function is exiting before the inner function has completed and will always return "no data". Problem is, I can't think of a way to work around it. Can anyone help me out? I'm sure this must be a reasonably common problem. Source: http://community.livejournal.com/javascript/93361.html
|