Por que meu onbeforeunload não correr agora, quando era antes? Ou AJAX falhando em segundo comando idênticos?
-
05-09-2019 - |
Pergunta
Este surge na sequência este pergunta ??p>
Este foi de trabalho:
<body onbeforeunload=
"ajaxRequest('UnlockQuery.ashx?QueryID=266&UserID=11631');">
Esta foi criada usando o seguinte na página aspx:
<body onbeforeunload=
"ajaxRequest('UnlockQuery.ashx?QueryID=<%= Session["QueryId"] %>&
UserID=<%= Session["UserID"] %>')">
Esta é não de trabalho:
<body id="uxBodyTag" onbeforeunload=
"ajaxRequest('UnlockQuery.ashx?QueryID=266&UserID=11631');">
Isto é criado usando:
uxBodyTag.Attributes["onbeforeunload"] +=
"ajaxRequest('UnlockQuery.ashx?QueryID=" +
queryId.ToString() + "&UserID=" + Session["UserID"].ToString() + "');";
O código a ser chamado é o seguinte:
function ajaxRequest(url)
{
xmlhttp=null;
if (window.XMLHttpRequest)
{ // code for all new browsers
xmlhttp=new XMLHttpRequest();
}
else if (window.ActiveXObject)
{ // code for IE5 and IE6
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlhttp!=null)
{
xmlhttp.onreadystatechange=null;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
}
EDIT:
Parece única falhar quando chamadas subsequentes são feitas para o mesmo desbloqueio. Acho que isso pode ser um problema AJAX ....
Solução
Adicionando
&date=DateTime.now.Ticks.ToString()
parece ter corrigido isso. Eu não acho que o IE7 gosta quando a mesma chamada AJAX vem e a anterior não foi "resolvido" (a página é descartado antes da chamada AJAX retorna).
Obrigado a todos que forneceu ajuda.
Outras dicas
Para os meios de depuração, nós tentamos:
alert(url);
xmlhttp.open("GET",url,true);
que deu o resultado esperado:
UnlockQuery.ashx?QueryID=319&UserID=11648
Agora podemos verificar o que o servidor tem a dizer através de:
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4) alert(this.status + ": " + this.StatusText);
};
EDIT:
Como se vê, o cache do navegador foi a razão para os resultados inesperados. Sugiro para proibir o cache de página AJAX através de cabeçalhos HTTP apropriados (Pragma
, Cache-Control
, Expires
).