日期:2014-05-16  浏览次数:20738 次

AJAX第一次调用正常,第二次不执行
在一个网页上做了一个AJAX 控制“显示/隐藏”按钮的程序。也就是管理一条信息是“显示”还是“隐藏”。
代码如下

页面javascript:

  function BtnOnClick(btnType,intId,strValue)
 {
  var xmlHttp;
  try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch (e)
  {
  try
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  catch (e)
  {
  try
  {
  xmlHttp=new XMLHttpRequest();
  }
  catch (e)
  {
  }
  }
  }

  xmlHttp.open("get","InfoStatus.asp?stateType="+btnType+"&id="+intId);
  xmlHttp.onreadyStateChange=function()
  {
  if(4==xmlHttp.readyState)
  {
  alert(xmlHttp.status)
  if(200==xmlHttp.status)
  {
  var blnBool=xmlHttp.responsetext;
  blnBool=unescape(blnBool);
  if(blnBool)
  {
  var elem=document.getElementById(btnType+intId);
  switch(elem.value)
  {
  case "显示": elem.value="隐藏";break;
  case "隐藏": elem.value="显示";break;
  default:alert('数据错误!');break;
  }
  }
  else
  alert('数据库写入错误,状态修改失败!');
  }
  }
  }
  xmlHttp.send(null);
  return false;
 }

 

InfoStatus.asp程序

  Dim intId,strUserId,blnResult
  intId = request.QueryString("id")
  strStateType = request.QueryString("stateType")
  blnStateValue = request.QueryString("stateValue")
  strUserId = "aaa" '需要更改用户名
  blnResult = fun_InfoStateUpdate(intId) ' intId--编号  

  conn.close()
  Set conn = Nothing
  response.write(blnResult)

 

fun_InfoStateUpdate(intId,strUserId) 是具体的SQL,SQL语句是" UPDATE Info SET isShow=~isShow WHERE id="&intId&" "

 

程序第一次调用能正常完成,但是继续点击页面按钮的时候,http返回状态是200,JavaScript 也都执行完成了(按钮的文字更改了) , 不过数据库中的数据并没有做出改变

刚开始用AJAX,不是很明白。望哪位前辈指点一下,感激不尽

------解决方案--------------------
xmlHttp.open("get","InfoStatus.asp?stateType="+btnType+"&id="+intId);
加上&d="+new Date().getTime() 看看 。
防止缓存 。
------解决方案--------------------
探讨

xmlHttp.open("get","InfoStatus.asp?stateType="+btnType+"&id="+intId);
加上&d="+new Date().getTime() 看看 。
防止缓存 。

------解决方案--------------------
探讨

xmlHttp.open("get","InfoStatus.asp?stateType="+btnType+"&id="+intId);
加上&d="+new Date().getTime() 看看 。
防止缓存 。

------解决方案--------------------
可以加上一个随机数,是缓存的问题。
------解决方案--------------------
没有改变传入参数,缓存问题
增加个随机数参数就OK了