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' }
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.
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.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With