Why the following code Based on Mozilla example does not work? Tried with Firefox 3.5.7 & Chrome.
Your browser is preventing cross-site scripting. You have to use a relative path, otherwise most browsers will simply return an error or an empty responseText.
The following Stack Overflow post is probably also related to your problem:
Security issue no?
Presumably firefox is preventing the local file from talking to a remote host?
Scouting round the net - found this. Try adding this to the start of your script:
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {
alert("Permission UniversalBrowserRead denied.");
}
Can't guarantee this'll work; because ultimately what you're trying to do is enter a security hole that browsers have been specifically coded to have plugged up (cross-domain requests).
There are some special scenarios where it can be switched on, though, usually at the user's discretion.
I'm also assuming that you've opened your HTML test page directly in the browser judging by your reference to file:///...
. For XMLHttpRequest
calls, you need to serve the HTML from a server. Try something like xampp (http://www.apachefriends.org/en/xampp.html) to get a local server up and running and then run your test from http://localhost/XMLHTTP.html
.
Note, this does not solve your same-origin problem, but this would allow the following code to work:
<script>
var req = new XMLHttpRequest();
req.open('GET', '/myTestResponse.html', false);
req.send();
if(req.status == 200) {
alert(req.responseText);
}
</script>
You cannot make requests across domains, even with local files.
https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript
Unless you are developing an extension, which does not have the same restrictions as a web page.