Check Avaibility of a page before loading using jquery/ajax
- by overcomer
Is it possible check the Accessibility of a page before loading it?
I have a form, running on mobile device using wireless connection. The problem is: not always this connection is avaible and i would like to alert the user when is doing a submit or an unload of the page.
The problem is that the page contains elements doing redirect like this:
<input type="button" value="MyText" onClick="script1;script2;...window.location='mylocation" />
If the user click on this button and the server is not achievable, i will recive some undesiderable errors.
Also if I want to generalize my script i do not know the value of "mylocation" previously.
The page contains elements to submit the Form also:
<input type="submit" name="SUBMIT" value="MyValue" onClick="return eval('validationForm()')" />
For the submitting I'm using the ajaxForm plugin and it works quite well.
This is a snippet of code:
Thanks to your answer I found the solution to the problem.
That's the code:
function checkConnection(u,s){
$.ajax({
url:u,
cache:false,
timeout:3000,
error: function(jqXHR, textStatus)
{
alert("Request failed: " + textStatus );
},
success: function()
{
eval(s);
}
});
}
$(document).ready(function() {
// part of the function that checks buttons with redirect
// for any input that contain a redirect on onClick attribute ("window.locarion=")
$("input[type=button]").each(function(){
var script = $(this).attr("onClick");
var url = "";
var position = script.indexOf("window.location") ;
if (position >= 0) { // case of redirect
url = script.substring(position+17, script.lenght);
url = url.split("\'")[0];
url = "\'"+url+"\'"; // that's my url
script = "\""+script+"\""; // that's the complete script
$(this).attr("onClick","checkConnection("+url+","+script+")");
}
});
// part of the function that checks the submit buttons (using ajaxForm plugin)
var is_error = false;
var options = {
error: function() {
if (alert("Error Message")==true) {
}
is_error = true;
},
target: window.document,
replaceTarget: is_error,
timeout: 3000
};
$("#myForm").ajaxForm(options);
});
I hope that this will be usefull.