以下是this问题
这 正在运作:
<body onbeforeunload=
"ajaxRequest('UnlockQuery.ashx?QueryID=266&UserID=11631');">
这是使用aspx页面中的以下内容创建的:
<body onbeforeunload=
"ajaxRequest('UnlockQuery.ashx?QueryID=<%= Session["QueryId"] %>&
UserID=<%= Session["UserID"] %>')">
这是不正在工作:
<body id="uxBodyTag" onbeforeunload=
"ajaxRequest('UnlockQuery.ashx?QueryID=266&UserID=11631');">
这是使用:
创建的uxBodyTag.Attributes["onbeforeunload"] +=
"ajaxRequest('UnlockQuery.ashx?QueryID=" +
queryId.ToString() + "&UserID=" + Session["UserID"].ToString() + "');";
被调用的代码是:
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);
}
}
编辑:
当后续调用同一个解锁时,似乎只会失败。我认为这可能是一个AJAX问题......
答案 0 :(得分:1)
对于调试方法,我们尝试了:
alert(url);
xmlhttp.open("GET",url,true);
给出了预期的结果:
UnlockQuery.ashx?QueryID=319&UserID=11648
现在我们可以查看服务器要说的内容:
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4) alert(this.status + ": " + this.StatusText);
};
编辑:
事实证明,浏览器缓存是意外结果的原因。我建议禁止通过适当的HTTP标头(Pragma
,Cache-Control
,Expires
)缓存AJAX页面。
答案 1 :(得分:1)
添加
&date=DateTime.now.Ticks.ToString()
似乎已经解决了这个问题。我不认为当同一个AJAX调用进来时,IE7不喜欢它,并且之前没有“解析”(页面在AJAX调用返回之前被释放)。
感谢所有提供帮助。