Pourquoi mon onbeforeunload ne fonctionne pas maintenant, quand il était auparavant? Ou AJAX défaut sur la deuxième commande identique?
-
05-09-2019 - |
Question
Ceci fait suite à cette question
était travail:
<body onbeforeunload=
"ajaxRequest('UnlockQuery.ashx?QueryID=266&UserID=11631');">
Il a été créé en utilisant ce qui suit dans la page ASPX:
<body onbeforeunload=
"ajaxRequest('UnlockQuery.ashx?QueryID=<%= Session["QueryId"] %>&
UserID=<%= Session["UserID"] %>')">
pas travail:
<body id="uxBodyTag" onbeforeunload=
"ajaxRequest('UnlockQuery.ashx?QueryID=266&UserID=11631');">
est créé en utilisant:
uxBodyTag.Attributes["onbeforeunload"] +=
"ajaxRequest('UnlockQuery.ashx?QueryID=" +
queryId.ToString() + "&UserID=" + Session["UserID"].ToString() + "');";
Le code étant appelé est la suivante:
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:
Il semble échouer que lorsque les appels suivants sont faits au même déverrouillage. Je pense que cela peut être un problème AJAX ....
La solution
Ajout
&date=DateTime.now.Ticks.ToString()
semble avoir fixé. Je ne pense pas que IE7 aime quand même appel AJAX est et le précédent n'a pas été « résolu » (la page est disposé avant le retour d'appel AJAX).
Merci à tous ceux qui fourni de l'aide.
Autres conseils
Pour les moyens de mise au point, nous avons essayé:
alert(url);
xmlhttp.open("GET",url,true);
qui a donné le résultat attendu de:
UnlockQuery.ashx?QueryID=319&UserID=11648
Maintenant, nous pouvons vérifier ce que le serveur doit dire par:
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4) alert(this.status + ": " + this.StatusText);
};
EDIT:
Comme il se trouve, le cache du navigateur est la raison des résultats inattendus. Je suggère d'interdire la mise en cache la page AJAX par en-têtes HTTP appropriées (Pragma
, Cache-Control
, Expires
).