xmlhttp problem using Mozilla ... responseText is always null

F

fochie

Greetings,

I'm having a problem when I try to GET a file from my server
via xmlhttp when using Mozilla. With IE I can get any type of file
fine, get/display headers fine, etc. With Mozilla, using the same
HTML/JS it always returns no data (xmlhttp.responseText is null).

When I try to get headers using Mozilla or display the http status code
I get some obscure exception in the javascript console that I've given
up on searching for an answer to ....

Error: [Exception... "Component returned failure code: 0x80040111
(NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult:
"0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame ::
http://myserver.com/xmlhttp.html? :: RSchange :: line 26" data: no]
Source File: http://myserver.com/xmlhttp.html?
Line: 26

I've tried coding my test app many ways based on the examples out there
and haven't been able to get it to run in Mozilla/FF yet.

If I do an alert on xmlhttp.responseText I get a blank alert pop up, if
I alert xmlhttp.responseText.length it's always zero using Mozilla.
Both alerts always work with the same HTML/JS when running in IE.

Beginning to think maybe I'm lacking something on the server side
related to Content-type being sent back that IE allows and Mozilla
doesn't(?)

Any assistance at this point would be greatly appreciated.

Thanks !
Steve

Here's a simple example that works in IE but returns null for
responseText in Mozilla when I run it ...

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JAVASCRIPT" type="text/javascript">
<!--
var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE
versions.
// and security blocked creation of the objects.
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}

function RSchange() {
if (xmlhttp.readyState==4) {
//if (xmlhttp.status == 200) {
//alert(xmlhttp.statusText); // this line chokes in Mozilla
alert(xmlhttp.responseText); //empty alert box using Moz
// }
}
}

function go() {
if (xmlhttp) {
xmlhttp.open("GET", "http://myserver.com/index.html", true);
xmlhttp.onreadystatechange=RSchange;
xmlhttp.send(null);
}
}
//-->
</script>

</head>
<BODY>

<FORM NAME='' ACTION='' onsubmit="return true;">
<INPUT TYPE="SUBMIT" VALUE='getit' onclick="go()"
</FORM>

</BODY>
</HTML>
 
M

Martin Honnen

fochie wrote:

I'm having a problem when I try to GET a file from my server
via xmlhttp when using Mozilla. With IE I can get any type of file
fine, get/display headers fine, etc. With Mozilla, using the same
HTML/JS it always returns no data (xmlhttp.responseText is null).

When I try to get headers using Mozilla or display the http status code
I get some obscure exception in the javascript console that I've given
up on searching for an answer to ....

Error: [Exception... "Component returned failure code: 0x80040111
(NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult:
"0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame ::
http://myserver.com/xmlhttp.html? :: RSchange :: line 26" data: no]
Source File: http://myserver.com/xmlhttp.html?
Line: 26

Which line exactly is that line 26, how does the code in that line look
when you get that error message?
Are you using frames or popup windows?
I've tried coding my test app many ways based on the examples out there
and haven't been able to get it to run in Mozilla/FF yet.

If I do an alert on xmlhttp.responseText I get a blank alert pop up, if
I alert xmlhttp.responseText.length it's always zero using Mozilla.
Both alerts always work with the same HTML/JS when running in IE.

Beginning to think maybe I'm lacking something on the server side
related to Content-type being sent back that IE allows and Mozilla
doesn't(?)

Any assistance at this point would be greatly appreciated.

Thanks !
Steve

Here's a simple example that works in IE but returns null for
responseText in Mozilla when I run it ...

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JAVASCRIPT" type="text/javascript">
<!--
var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE
versions.
// and security blocked creation of the objects.
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}

function RSchange() {
if (xmlhttp.readyState==4) {
//if (xmlhttp.status == 200) {
//alert(xmlhttp.statusText); // this line chokes in Mozilla
alert(xmlhttp.responseText); //empty alert box using Moz
// }
}
}

function go() {
if (xmlhttp) {
xmlhttp.open("GET", "http://myserver.com/index.html", true);

Is http://myserver.com/index.html on the same server as the HTML
document with the script? What content type does the server deliver
index.html with?
 
F

fochie

Line 26 is the following -
if (xmlhttp.status == 200) { (sorry, I also put the comment on the
wrong line in the snippit above)

Not using frames.

The page I'm trying to retrieve is on the same server (same dir also)
as the html containing the xmlhttp call.

Not sure what content type is being used by the server for delivering
index.html. Is this an Ap[ache directive ?
Maybe I should issue an xmlhttp HEAD call using IE (since Moz fails
with the same error msg mentioned above if I try to do a HEAD request)
and see what Content type is being returned ?

Thanks for the reply !
Steve
 
M

Martin Honnen

fochie said:
Line 26 is the following -
if (xmlhttp.status == 200) { (sorry, I also put the comment on the
wrong line in the snippit above)

Not using frames.

The page I'm trying to retrieve is on the same server (same dir also)
as the html containing the xmlhttp call.

Not sure what content type is being used by the server for delivering
index.html. Is this an Ap[ache directive ?
Maybe I should issue an xmlhttp HEAD call using IE (since Moz fails
with the same error msg mentioned above if I try to do a HEAD request)
and see what Content type is being returned ?

If that is an HTML page you can simply load it in a Mozilla window and
then check page info for details on the content type Mozilla receives.
 
F

fochie

When I issue the following HEAD equest in IE it returns -
Content-Type: text/html
If I issue the same request in Moz it throws this in the javascript
console-

Error: [Exception... "Component returned failure code: 0x80040111
(NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.getAllResponseHeaders]"
nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame ::
http://timegonebuy.com/javascript_XML.html? :: anonymous :: line 123"
data: no]
Source File: http://timegonebuy.com/test_javascript_XML.html?
Line: 123

This is Line 123 -

alert('header returned is ' +xmlhttp.getAllResponseHeaders())

Here's what was issues -

try {

xmlhttp.open("HEAD", "http://myserver.com/index.html",true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
alert('header returned is ' +xmlhttp.getAllResponseHeaders())
}
}
xmlhttp.send(null)
}
catch (e) { alert('failed'); }
 
F

fochie

from the snippit above ... this is how the function gets invoked ...
maybe I have this twisted up
since it's type=submit and also has an onclick ? -
..
..
..
</head>
<BODY>
<FORM NAME='' ACTION='' onsubmit="return true;">
<INPUT TYPE="SUBMIT" VALUE='getit' onclick="go()"
</FORM>
</BODY>
</HTML>


Thanks for the reply ... hope someone can help me get past this soon
.... been bangin my head against it for over a week
 
F

fochie

THAT WAS THE PROBLEM ! .... I changed it to "type=button" and now the
file is received/displayed in Mozilla ... thanks for the pointer !!!!!
... obviously I need to pay more attention to the basic HTML pieces as
well ... IE must be forgiving in this scenario .... thanks again !!!!
 
V

VK

Glad it helped.
Just to make sure you got the problem right (to not repeat it):

...
form.submit();
some code after
....

or

....
document.location.hred = someURL;
some code after
....

are equally wrong, because the first statement clears the current DOM /
script data. It's like trying to continue the conversation with a
person after you shoot him in the temple. Some "post mortum" may occur
(script is still working) because a part of code was retained in the
program cache (orphaned script). But you cannot make any reliable
accumptions about it.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top