473,769 Members | 4,173 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

firefox reports uncaught exception NS_ERROR_FAILUR E with nsIXMLHttpReque st.send

Plater
7,872 Recognized Expert Expert
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:
Expand|Select|Wrap|Line Numbers
  1. uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" 
  2.  
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:
Expand|Select|Wrap|Line Numbers
  1. function createRequestObject() 
  2. {//creates an httprequest object
  3.     var ro;
  4.  
  5.     var browser = navigator.appName;
  6.     if(browser == "Microsoft Internet Explorer"){
  7.         ro = new ActiveXObject("Microsoft.XMLHTTP");
  8.     }else{
  9.         ro = new XMLHttpRequest();
  10.     }
  11.     return ro;
  12. }
  13.  
  14. var http = createRequestObject();
  15. var ourinterval=setInterval("SendUpdate()",5000);
  16.  
  17. function SendUpdate()
  18. {
  19.   http.open('get', '/refresh.cgi?time='+ new Date().getTime());
  20.   http.onreadystatechange = handleSendUpdateReponse;
  21.   http.send(null);
  22. }
  23. function handleSendUpdateReponse()
  24. {
  25.     if(http.readyState == 4)
  26.     {
  27.         var update = new Array();
  28.         if (http.status=="200")
  29.         {
  30.             var response = http.responseText;    
  31.             if (response!="")
  32.             {
  33.               if(response.indexOf('|' != -1)) 
  34.               {
  35.                     update=response.split('|');
  36.                     if (update.length>0)
  37.                   {
  38.                     if (update[1].indexOf("SUCCESS")>-1)
  39.                     {
  40.                         var line=update[1];
  41.  
  42.                         var things=new Array();
  43.                         things=line.split('&');
  44.                         var i;
  45.                         for (i=0;i<things.length;i++)
  46.                         {
  47.                             var nameval=things[i].split('=');
  48.                             if (i>0)
  49.                             {
  50.                                 returnObjById(nameval[0]).innerHTML=nameval[1];
  51.                             }
  52.                         }
  53.                     }//end of found "SUCCESS"
  54.                     }//end of update split("|") to have multiple sections
  55.               }//end of response.indexof("|")
  56.             }//end of response!=""
  57.         }//end of status==200
  58.     }//end of readystate=4
  59. }//end of function
  60.  
Jul 23 '07 #1
2 36722
Plater
7,872 Recognized Expert Expert
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:
Expand|Select|Wrap|Line Numbers
  1. function SendUpdate()
  2. {
  3.     var action="DATETIME&TEMPERATURE&HUMIDITY&SAMPLESTATE";
  4.     action+="&CHAN1&CHAN2&CHAN3&CHAN4&CHAN5&CHAN6&CHAN7&CHAN8&CHAN9&CHAN10";
  5.     try
  6.     {
  7.         http.open('get', '/refresh.cgi?'+action+'&amp;time='+ new Date().getTime());
  8.       http.onreadystatechange = handleSendUpdateReponse;
  9.       http.send(null);
  10.     }
  11.     catch(error)
  12.     {
  13.         //alert(error);
  14.         returnObjById("SAMPLESTATE").innerHTML="Problem Communicating";
  15.     }
  16.  
  17. }
  18.  
  19. function handleSendUpdateReponse()
  20. {
  21.     if(http.readyState == 4)
  22.     {
  23.         var update = new Array();
  24.         if (http.status=="200")
  25.         {
  26.             var response = http.responseText;    
  27.             if (response!="")
  28.             {
  29.               if(response.indexOf('|' != -1)) 
  30.               {
  31.                     update=response.split('|');
  32.                     if (update.length>0)
  33.                   {
  34.                     if (update[1].indexOf("SUCCESS")>-1)
  35.                     {
  36.                         var line=update[1];
  37.  
  38.                         var things=new Array();
  39.                         things=line.split('&');
  40.                         var i;
  41.                         for (i=0;i<things.length;i++)
  42.                         {
  43.                             var nameval=things[i].split('=');
  44.                             if (i>0)
  45.                             {
  46.                                 returnObjById(nameval[0]).innerHTML=nameval[1];
  47.                             }
  48.                         }
  49.                     }//end of found "SUCCESS"
  50.                     }//end of update split("|") to have multiple sections
  51.               }//end of response.indexof("|")
  52.             }//end of response!=""
  53.         }//end of status==200
  54.         else if(http.status==12029)
  55.         {
  56.             returnObjById("SAMPLESTATE").innerHTML="Problem Communicating";
  57.         }            
  58.     }//end of readystate=4
  59. }//end of function
  60.  
Jul 25 '07 #2
cleaner
1 New Member
Hi.

I also had a though time figure out a way to make this happen in firefox.
Expand|Select|Wrap|Line Numbers
  1. ////////////////////////////////////////////////////////////////////////////////////////////// 
  2. // firefox reports uncaught exception NS_ERROR_FAILURE with nsIXMLHttpRequest.send
  3. // http://bytes.com/forum/thread681905.html
  4. // http://radio.javaranch.com/pascarello/2006/02/07/1139345471027.html
  5. // http://dev.rubyonrails.org/ticket/4267      
  6. // 
  7. // I needed a way to track server downtime even if the callback does not work when 
  8. // server closes down. Since firefox does not support failover on server downtime I made this object
  9. // where I track errors even if there is no callbacks to track.
  10. // 
  11. //    To use the object from your main app: 
  12. //        failover = new clientFailover();   , create object in seperate "thread" (unsing setInterval)
  13. //        failover.start("fail.php");            , the url where the request is made against as parameter
  14. // object that handles failover between client and server. It pings the server in smal intervals
  15. // and reporttext is generated every 10 seconds. Let me know if anyone comes up with a better solution
  16.  
  17. //////////////////////////////////////////////////////////////////////////////////////////////
  18. function clientFailover(){
  19.        var start,url,frequest;
  20.        var uinterval = 10000;   // set update interval
  21.        var pinterval = 1000;    // set ping interval
  22.        var intervalID = 0;
  23.        var fstatus = false; // true on error, false on normal operation
  24.        var active = false;  // flag on when thread is aktiv
  25.        var errorflag = 0;
  26.  
  27.      // Set error value code, 0 = connection and callback ok, 1 = connection ok but status error
  28.      // 2 = connection ok but page error, 4 = Connection and callback lost
  29.        var setError = function(value){
  30.             errorflag = value;
  31.       };
  32.  
  33.       var getError = function(){
  34.         return errorflag;
  35.       };
  36.  
  37.        // cObject is the XMLHTTPRequest instance
  38.        var cObject = function(){
  39.               var conn = false;
  40.               if (window.XMLHttpRequest){
  41.                   conn = new XMLHttpRequest();
  42.               }else if (window.ActiveXObject){
  43.                   try{
  44.                       conn = new ActiveXObject("Msxml2.XMLHTTP");
  45.                       }catch (e){
  46.                           try{
  47.                           conn = new ActiveXObject("Microsoft.XMLHTTP");
  48.                       }catch (e){
  49.                           conn = false;
  50.                           }
  51.                       }    
  52.                   }
  53.                  return conn;
  54.       }
  55.         // start method, this method is called from the main application
  56.         // Parameter is the URL, This is where the "ping" is making request against
  57.  
  58.         this.start = function(value){
  59.  
  60.             url = value;
  61.             frequest = cObject();
  62.             if (!frequest || !url){
  63.                 return false;
  64.             }else{
  65.  
  66.              ping();
  67.              // set interval for the update info (every 10 second), this should be higher than the ping interval
  68.              setInterval(function(){
  69.                           pushInfo();}
  70.                           ,uinterval);
  71.  
  72.                    return true;
  73.             }
  74.         };
  75.       var pushInfo = function(){
  76.               if (getError() == 4){
  77.                   alert("Server and callback down " + getError());
  78.               }else{
  79.                   alert("Server and callback works " + getError());
  80.               }
  81.       };  
  82.  
  83.       // request (ping) the url page on server. The ping interval is set to one second
  84.      var ping = function(){
  85.  
  86.            intervalID = setInterval(function(){
  87.                 setError(4);
  88.                 frequest.onreadystatechange = check;
  89.                 frequest.open("GET", url, true);
  90.             try{
  91.                 frequest.send(null);
  92.  
  93.             }catch (e){
  94.                 // catch NS_ERROR_NOT_INITZIALIZED
  95.             }
  96.         }, pinterval);
  97.  
  98.       }
  99.      // Check if the request return anything, if so, set status to true meaning that server is down
  100.      var check = function(){
  101.  
  102.         try{
  103.             if (frequest.readyState >= 1){
  104.  
  105.                 if (frequest.status !=200){
  106.  
  107.                     fstatus = true;
  108.                     setError(2);
  109.                 }else{
  110.                     fstatus = false;
  111.                     setError(0);
  112.                 }
  113.             }
  114.         }catch (e){
  115.             setError(4);
  116.             // firefox reports uncaught exception NS_ERROR_FAILURE with nsIXMLHttpRequest.send
  117.             // this failure is catched here
  118.         }    
  119.  
  120.       };
  121.  
  122.  }
  123.  
Jul 2 '08 #3

Sign in to post your reply or Sign up for a free account.

Similar topics

7
2473
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, I get the following error: Error: uncaught exception: " nsresult: "0x80004002 (NS_NOINTERFACE)" location: "JS frame :: http://localhost:3000/form/edit_fields/1 :: removeField :: line 65" data: no]
3
4747
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: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) " nsresult: "0xc1f30001 (NS_ERROR_NOT_INITIALIZED)"
5
3477
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 being: s += j + ". " + i + ": " + document + "<br />\n"; All the code:
2
1699
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
2
7201
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 denied to get property Window.processXML Is there a way to get around this issue? default.htm
9
14152
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 : var requestTimer = setTimeout(function() { xmlHttp.send(post); }, 10000);
2
7475
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 SDK.. the application stops. However, it does work only on "Sun Java(TM) Wireless Toolkit 2.5.1 for CLDC" with the same errors displayed, but the application was able to execute successfully. Errors received are: Using Untrusted simulated domain...
3
3754
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 :: centrePopup :: line 22" data: no] how to coorect thus the above error...........
1
2300
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');}"); $perl->eval('use Kernel::System::Email qw(new Send ConfigObject LogObject DBObject TimeObject MainObject EncodeObject _MessageIDCreate Log Get); '); $ar=array(From => 'me@example.com', To => 'friend@example.com',
0
10222
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10050
jinu1996
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 tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
9999
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 Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
1
7413
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6675
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5310
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
5448
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
2
3570
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2815
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.