06/08/2009 Development / java script

Essa semana surgiu uma situação aqui na empresa onde precisamos verificar se o link que a gente tava chamando realmente existia e se nele estava tudo correto. Primeiro fizemos em asp.net

Dim SiteExists As Boolean = True
Dim URL_Object As New System.Uri(url)
Dim URL_WebRequest As System.Net.HttpWebRequest
Dim URL_WebResponse As System.Net.HttpWebResponse

Try
URL_WebRequest = System.Net.WebRequest.Create(URL_Object)
URL_WebRequest.Timeout = 4000
URL_WebRequest.AllowAutoRedirect = True
URL_WebRequest.MaximumAutomaticRedirections = 3
URL_WebResponse = URL_WebRequest.GetResponse
SiteExists = True
URL_WebResponse.Close()
Catch ex As Exception
SiteExists = False
End Try

If SiteExists Then
Return True
Else
Return False
End If

ou seja, retorna um true ou false do link.

Dentro da tal aplicação ocorria um postBack, e nessa hora nós não tinhamos mais como saber se a aplicação estava ON ou OFF... Então sugerimos ao analista que colocasse essa tal verificação também na página deles. Mas, eis que surge a situação: E se após o carregamento da página, o cliente desse um postBack e nessa hora o servidor ja está fora...iria aparecer na tela um 404 not found bonito. Então sugerimos que antes de ocorrer o postBack o desenvolvedor checasse via Javascript se o servidor esta respondendo.

Primeiro, eu fiz um script rapidinho, procurei na internet os objetos XMLHttpRequest e mandei pra ele. Ficou mais ou menos assim.

var request = false;

try{ request = new XMLHttpRequest();}
catch(ee){
try{request = new ActiveXObject("Msxml2.XMLHTTP");}
catch(e){
try{request = new ActiveXObject("Microsoft.XMLHTTP");}
catch(E){request = false;}}}

if (!request){ alert("Erro na inicialização do objeto XMLHttpRequest!"); }

function getCustomerInfo() {
var url = document.getElementById("url").value;
request.open("GET", url, false);
request.onreadystatechange = updatePage;
request.send(null); }

function updatePage() {
if (request.readyState == 4){
if (request.status == 200){
alert('OK A PAGINA ESTA ATIVA... O STATUS EH: ' + request.status)}
else{
alert("EITA.....A PAGINA ESTA FORA: O Status da página eh: " + request.status);}
}}

O codigo acima chega se o endereo da url que esta num input é valido ou não

Tudo bem, tudo legal...mas depois eu comecei a pesquisar como seria essa parada com o tal do Jquery ehhhhhh:

$.ajax({
    url: 'teste.asp',
    type: 'POST',
    data: {nome: "felipe", ts: 2},
    timeout: 1000,
    error: function(e){
        alert("error:" + e.message);
    },
    success: function(xml){
        alert(xml);}
    });