====100分问一个超古怪的问题。请帮忙......
我有一个网页,循环访问某页,如果返回值不为0,则弹出一个窗口。代码如下:<script language="javascript" type="text/javascript">
var xmlHttp;
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();
}
}
function doRequestUsingGET()
{
createXMLHttpRequest();
var queryString="Pop/CheckNewCaller.aspx";
xmlHttp.onreadystatechange=handleStateChange;
xmlHttp.open("GET",queryString,true);
xmlHttp.send(null);
}
function handleStateChange()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
alert(xmlHttp.responseText);
if(xmlHttp.responseText!="0")
{
window.open("Pop/PopWindow.aspx?Phone=" + xmlHttp.responseText,'',"");
}
}
}
}
setInterval("doRequestUsingGET()",2000);
</script>
访问的Pop/CheckNewCaller.aspx代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (Application["Caller"] != null)
{
DataTable dt=((DataSet)Application["Caller"]).Tables["Caller"];
if (dt.Rows.Count > 0)
{
Response.Write(dt.Rows[0]["Phone"].ToString());
dt.Rows.RemoveAt(0);
Response.End();
}
else
{
Response.Write("0");
Response.End();
}
}
}
上面Application里的DataSet是在Global.asax里初始化的,代码如下:
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
DataTable callTable = new DataTable("Caller");
callTable.Columns.Add("Phone", typeof(String));
DataSet ds = new DataSet();
ds.Tables.Add(callTable);
Application["Caller"] = ds;
}
网页打开后。xmlhttp循环访问CheckNewCaller页,这样一直返回值0.因为DataSet里没有值。DataSet里的值是通过另一个网页(AddNewCaller.aspx)来插入值的,代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (Application["Caller"] != null && Request.QueryString["Phone"]!=null)
{
DataTable dt = ((DataSet)Application["Caller"]).Tables["Caller"];
DataRow dr = dt.NewRow();
dr["Phone"] = Request.QueryString["Phone"].ToString();
dt.Rows.Add(dr);
}
}
****************************************************
问题是这样的,页面一开始时都可以2秒钟访问一次CheckNewCaller.aspx页,但是当我访问AddNewCaller.aspx来增加值后,javascript的xmlhttp就不访问CheckNewCaller.aspx页了。不知道什么原因。 --------------------编程问答-------------------- 对js了解的不是很清楚,关注中^^ 顶上去 --------------------编程问答-------------------- 增加值 一定要用 AddNewCaller.aspx 来完成么? --------------------编程问答-------------------- UP --------------------编程问答-------------------- 没看出来,等高手 --------------------编程问答-------------------- 你怎么知道没有再访问AddNewCaller.aspx ? --------------------编程问答-------------------- 建议
1,增加循环访问的时间 10s 看看是什么效果
2,window.open 改成其他方式 比如 加一个div标签,让div.innerHTML= xmlHttp.responseText 看看是什么效果 --------------------编程问答-------------------- 关注! --------------------编程问答-------------------- 你怎么知道没有再访问AddNewCaller.aspx ?
========================================
因为我进行着调试我中断。开始时都正常,断点什么都正常。一但访问了AddNewCaller.aspx ,那么断点就没用了。
window.open 改成其他方式 比如 加一个div标签,让div.innerHTML= xmlHttp.responseText 看看是什么效果=====================
我用alert也试过了。一样。 --------------------编程问答-------------------- window.open 跟alert区别不大 --------------------编程问答-------------------- 为什么执行了一下,它就不再访问那一页了呢? --------------------编程问答-------------------- 关注中,高手们快点来解决问题吧,哈哈``` --------------------编程问答-------------------- uuuppp... --------------------编程问答-------------------- up
补充:.NET技术 , ASP.NET