+ -
当前位置:首页 → 问答吧 → Ajax 不执行后台的方法的问题

Ajax 不执行后台的方法的问题

时间:2011-01-19

来源:互联网

最近在做Ajax时遇到一个很奇怪的问题,在前台页面(Default.aspx)中有这么一个JS方法:
 function DoAjax()
  {
  var xmlhttp;  
   
  try{  
  //IE  
  xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');  
  }catch(e){  
  try{  
  //其他浏览器  
  xmlhttp = new XMLHttpRequest();  
  }catch(e){alert("您的浏览器不支持Ajax!");}  
  }  
   
  xmlhttp.open("get","Default.aspx?Dotype=query",true);  
  xmlhttp.onreadystatechange = function()
  {  
  if(xmlhttp.readyState == 4)
  { 
  if(xmlhttp.status == 200)
  { 
  doTest();
  }
  }  
  }
  xmlhttp.send(null); 
  }

前台页面用一个按钮来调用它:
<input id="AjaxTest" type="button" value="AjaxTest" onclick="DoAjax()" />

后台页面中(Default.aspx.cs):
protected void Page_Load(object sender, EventArgs e)
  {
  if (Request.QueryString["Dotype"] != null)
  {
  //问题就在于这里,无论如何程序都进不到这里面来,而只是执行到if语句就跳回前台了
  string typetmp = Request.QueryString["Dotype"].ToString();
  .......
  ....
  }
  }
以上的代码真没看出来哪里错了,是在IE6里执行时出现的情况,FF中执行没有一点问题。
可是为什么IE6就不行了呢?怎样才能让它兼容IE6呢?谢谢各位了!

作者: DragonDreammer   发布时间: 2011-01-19

两个地方:
1.var xmlhttp; 放到函数外边,做为全局变量
2.xmlhttp.open("get","Default.aspx?Dotype=query",true); true改成false(即同步)  

作者: zhoufeng0401   发布时间: 2011-01-19

xmlhttp.open("get","Default.aspx?Dotype=query&" + Date.parse(new Date()),true);  
禁止缓存

作者: net_lover   发布时间: 2011-01-19