当前位置:编程学习 > C#/ASP.NET >>

====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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,