Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Timeout XMLHttpRequest

How can I add a timeout to the following script? I want it to display text as "Timed Out".

var bustcachevar = 1 //bust potential caching of external pages after initial request? (1=yes, 0=no) var loadedobjects = "" var rootdomain = "http://" + window.location.hostname var bustcacheparameter = ""  function ajaxpage(url, containerid) {     var page_request = false     if (window.XMLHttpRequest) // if Mozilla, Safari etc         page_request = new XMLHttpRequest()     else if (window.ActiveXObject) { // if IE         try {             page_request = new ActiveXObject("Msxml2.XMLHTTP")         } catch (e) {             try {                 page_request = new ActiveXObject("Microsoft.XMLHTTP")             } catch (e) {}         }     } else         return false     document.getElementById(containerid).innerHTML = '<img src="load.gif" border="0"><br><br><strong>Generating Link...</strong>'     page_request.onreadystatechange = function () {         loadpage(page_request, containerid)     }     if (bustcachevar) //if bust caching of external page         bustcacheparameter = (url.indexOf("?") != -1) ? "&" + new Date().getTime() : "?" + new Date().getTime()     page_request.open('GET', url + bustcacheparameter, true)     page_request.send(null) }   function loadpage(page_request, containerid) {     if (page_request.readyState == 4 && (page_request.status == 200 || window.location.href.indexOf("http") == -1))         document.getElementById(containerid).innerHTML = page_request.responseText     else if (page_request.readyState == 4 && (page_request.status == 404 || window.location.href.indexOf("http") == -1))         document.getElementById(containerid).innerHTML = '<strong>Unable to load link</strong><br>Please try again in a few moments' } 
like image 713
InvalidSyntax Avatar asked Oct 06 '09 05:10

InvalidSyntax


People also ask

What is the XMLHttpRequest timeout?

The XMLHttpRequest. timeout property is an unsigned long representing the number of milliseconds a request can take before automatically being terminated. The default value is 0, which means there is no timeout.

How do I set HTTP request timeout?

Timeouts on http. request() takes a timeout option. Its documentation says: timeout <number> : A number specifying the socket timeout in milliseconds. This will set the timeout before the socket is connected.

What is http timeout?

The HyperText Transfer Protocol (HTTP) 408 Request Timeout response status code means that the server would like to shut down this unused connection. It is sent on an idle connection by some servers, even without any previous request by the client.


1 Answers

using the timeout properties of XMLHttpRequest object for example.

var xhr = new XMLHttpRequest();  xhr.onreadystatechange = function () {     if (xhr.readyState == 4) {         alert("ready state = 4");     } };  xhr.open("POST", "http://www.service.org/myService.svc/Method", true); xhr.setRequestHeader("Content-type", "application/json; charset=utf-8"); xhr.timeout = 4000; // Set timeout to 4 seconds (4000 milliseconds) xhr.ontimeout = function () { alert("Timed out!!!"); } xhr.send(json); 

the above code works for me!

Cheers

like image 166
André Pedroso Avatar answered Sep 22 '22 15:09

André Pedroso