I am using the XMLHttpRequest to send a request every 5ish seconds or so.
Everything works fine until I take the server down that the object is trying to retrieve data from.
Then the firefox console keeps racking up these: -
uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)"
-
If I turn the server back on, it continues to update it's data just fine. I know a simple solution is to just trap the exception, but I don't think I should have to. There should be something I can do to keep it from generating one in the first place.
Relevant code: -
function createRequestObject()
-
{//creates an httprequest object
-
var ro;
-
-
var browser = navigator.appName;
-
if(browser == "Microsoft Internet Explorer"){
-
ro = new ActiveXObject("Microsoft.XMLHTTP");
-
}else{
-
ro = new XMLHttpRequest();
-
}
-
return ro;
-
}
-
-
var http = createRequestObject();
-
var ourinterval=setInterval("SendUpdate()",5000);
-
-
function SendUpdate()
-
{
-
http.open('get', '/refresh.cgi?time='+ new Date().getTime());
-
http.onreadystatechange = handleSendUpdateReponse;
-
http.send(null);
-
}
-
function handleSendUpdateReponse()
-
{
-
if(http.readyState == 4)
-
{
-
var update = new Array();
-
if (http.status=="200")
-
{
-
var response = http.responseText;
-
if (response!="")
-
{
-
if(response.indexOf('|' != -1))
-
{
-
update=response.split('|');
-
if (update.length>0)
-
{
-
if (update[1].indexOf("SUCCESS")>-1)
-
{
-
var line=update[1];
-
-
var things=new Array();
-
things=line.split('&');
-
var i;
-
for (i=0;i<things.length;i++)
-
{
-
var nameval=things[i].split('=');
-
if (i>0)
-
{
-
returnObjById(nameval[0]).innerHTML=nameval[1];
-
}
-
}
-
}//end of found "SUCCESS"
-
}//end of update split("|") to have multiple sections
-
}//end of response.indexof("|")
-
}//end of response!=""
-
}//end of status==200
-
}//end of readystate=4
-
}//end of function
-
2 36657
Well, turns out that its something firefox just hasn't gotten around to fixing yet: http://www.fleegix.org/articles/2006..._failure-error
The activeX equiv of XMLHttpRequest does not have this problem, providing a much more usefull notification as "12029" in the http.status
Those error codes can be found here: http://support.microsoft.com/kb/193625
A lot of people use the XMLHTTPRequest object, why am I the only one doing checking for if the talkbalk host is no longer there?
Here are the changes I made to keep both browsers quiet and happy: -
function SendUpdate()
-
{
-
var action="DATETIME&TEMPERATURE&HUMIDITY&SAMPLESTATE";
-
action+="&CHAN1&CHAN2&CHAN3&CHAN4&CHAN5&CHAN6&CHAN7&CHAN8&CHAN9&CHAN10";
-
try
-
{
-
http.open('get', '/refresh.cgi?'+action+'&time='+ new Date().getTime());
-
http.onreadystatechange = handleSendUpdateReponse;
-
http.send(null);
-
}
-
catch(error)
-
{
-
//alert(error);
-
returnObjById("SAMPLESTATE").innerHTML="Problem Communicating";
-
}
-
-
}
-
-
function handleSendUpdateReponse()
-
{
-
if(http.readyState == 4)
-
{
-
var update = new Array();
-
if (http.status=="200")
-
{
-
var response = http.responseText;
-
if (response!="")
-
{
-
if(response.indexOf('|' != -1))
-
{
-
update=response.split('|');
-
if (update.length>0)
-
{
-
if (update[1].indexOf("SUCCESS")>-1)
-
{
-
var line=update[1];
-
-
var things=new Array();
-
things=line.split('&');
-
var i;
-
for (i=0;i<things.length;i++)
-
{
-
var nameval=things[i].split('=');
-
if (i>0)
-
{
-
returnObjById(nameval[0]).innerHTML=nameval[1];
-
}
-
}
-
}//end of found "SUCCESS"
-
}//end of update split("|") to have multiple sections
-
}//end of response.indexof("|")
-
}//end of response!=""
-
}//end of status==200
-
else if(http.status==12029)
-
{
-
returnObjById("SAMPLESTATE").innerHTML="Problem Communicating";
-
}
-
}//end of readystate=4
-
}//end of function
-
Hi.
I also had a though time figure out a way to make this happen in firefox. -
//////////////////////////////////////////////////////////////////////////////////////////////
-
// firefox reports uncaught exception NS_ERROR_FAILURE with nsIXMLHttpRequest.send
-
// http://bytes.com/forum/thread681905.html
-
// http://radio.javaranch.com/pascarello/2006/02/07/1139345471027.html
-
// http://dev.rubyonrails.org/ticket/4267
-
//
-
// I needed a way to track server downtime even if the callback does not work when
-
// server closes down. Since firefox does not support failover on server downtime I made this object
-
// where I track errors even if there is no callbacks to track.
-
//
-
// To use the object from your main app:
-
// failover = new clientFailover(); , create object in seperate "thread" (unsing setInterval)
-
// failover.start("fail.php"); , the url where the request is made against as parameter
-
// object that handles failover between client and server. It pings the server in smal intervals
-
// and reporttext is generated every 10 seconds. Let me know if anyone comes up with a better solution
-
-
//////////////////////////////////////////////////////////////////////////////////////////////
-
function clientFailover(){
-
var start,url,frequest;
-
var uinterval = 10000; // set update interval
-
var pinterval = 1000; // set ping interval
-
var intervalID = 0;
-
var fstatus = false; // true on error, false on normal operation
-
var active = false; // flag on when thread is aktiv
-
var errorflag = 0;
-
-
// Set error value code, 0 = connection and callback ok, 1 = connection ok but status error
-
// 2 = connection ok but page error, 4 = Connection and callback lost
-
var setError = function(value){
-
errorflag = value;
-
};
-
-
var getError = function(){
-
return errorflag;
-
};
-
-
// cObject is the XMLHTTPRequest instance
-
var cObject = function(){
-
var conn = false;
-
if (window.XMLHttpRequest){
-
conn = new XMLHttpRequest();
-
}else if (window.ActiveXObject){
-
try{
-
conn = new ActiveXObject("Msxml2.XMLHTTP");
-
}catch (e){
-
try{
-
conn = new ActiveXObject("Microsoft.XMLHTTP");
-
}catch (e){
-
conn = false;
-
}
-
}
-
}
-
return conn;
-
}
-
// start method, this method is called from the main application
-
// Parameter is the URL, This is where the "ping" is making request against
-
-
this.start = function(value){
-
-
url = value;
-
frequest = cObject();
-
if (!frequest || !url){
-
return false;
-
}else{
-
-
ping();
-
// set interval for the update info (every 10 second), this should be higher than the ping interval
-
setInterval(function(){
-
pushInfo();}
-
,uinterval);
-
-
return true;
-
}
-
};
-
var pushInfo = function(){
-
if (getError() == 4){
-
alert("Server and callback down " + getError());
-
}else{
-
alert("Server and callback works " + getError());
-
}
-
};
-
-
// request (ping) the url page on server. The ping interval is set to one second
-
var ping = function(){
-
-
intervalID = setInterval(function(){
-
setError(4);
-
frequest.onreadystatechange = check;
-
frequest.open("GET", url, true);
-
try{
-
frequest.send(null);
-
-
}catch (e){
-
// catch NS_ERROR_NOT_INITZIALIZED
-
}
-
}, pinterval);
-
-
}
-
// Check if the request return anything, if so, set status to true meaning that server is down
-
var check = function(){
-
-
try{
-
if (frequest.readyState >= 1){
-
-
if (frequest.status !=200){
-
-
fstatus = true;
-
setError(2);
-
}else{
-
fstatus = false;
-
setError(0);
-
}
-
}
-
}catch (e){
-
setError(4);
-
// firefox reports uncaught exception NS_ERROR_FAILURE with nsIXMLHttpRequest.send
-
// this failure is catched here
-
}
-
-
};
-
-
}
-
Sign in to post your reply or Sign up for a free account.
Similar topics
by: meaneyedcat |
last post by:
When I call addField(), my table appears to be populated correctly
with a new row in the table with all the required fields. However,
when I call delete row on any new rows that have been created,...
|
by: harishdixit1 |
last post by:
Hello friends i m calling a javascript function from toolbar on the web
page .
but on statement xmlHTTPReq.send( data );
exception occurs. execption is
"Component returned failure code:...
|
by: -Lost |
last post by:
Error: uncaught exception: " nsresult: "0x80004001
(NS_ERROR_NOT_IMPLEMENTED)" location: "JS frame ::
file:///D:/sites/_test/js/iterate_document.htm :: <TOP_LEVEL:: line 15" data: no]
Line 15...
|
by: mkoonani |
last post by:
Hi, i am getting the following error while using js to communicate between parent and child windows using Firefox browser.
Can anyone help me out from this.?
MK
|
by: funktacular |
last post by:
Hi -
I have some javascript that works when I run it from a server, but I
need to run it locally. When I try to execute it locally I get the
following error:
Error: uncaught exception: Permission...
|
by: xhunter |
last post by:
Hi,
I have written my code to load some content through ajax, which works perfectly,
then I thought of adding a timeout to retry the action in case it has failed or something.
here is the code...
|
by: josephx |
last post by:
Hello,
I got some of these errors listed below after executing an HTTP Post MIDlet on CLDC/MIDP platform, "Nokia S40 DP 2.0 SDK 1.1" and "S40 5th Edition SDK Feature Pack 1" and even for S60's...
|
by: friend |
last post by:
Error: uncaught exception: " nsresult:
"0x80004005 (NS_ERROR_FAILURE)" location: "JS frame ::
http://manimekalai/VulnMgmt/scanfi/crs_source/vulnupdate/latest.php?vulnerability=2451
::...
|
by: smohan |
last post by:
Hi,
I'm very new to perl. I tried to use the perl module in php script, but im getting error
<?php
$perl = new Perl();
$perl->eval("BEGIN {unshift( @INC, '/opt/otrs');}");...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: ryjfgjl |
last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
|
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
| |