ajax只能工作一次的问题

时间:2011-08-22 16:23:32

标签: javascript ajax

AJAX只能运行一次,我必须重新加载页面才能再次使用它。我该如何解决这个问题?

echo "<div class='unsubscribe'><a id='us$id' href='javascript:unsubscribe($id);'><img src='/unsubscribe.jpg' alt='unsubscribe' /></a></div>";



function unsubscribe(number)
{
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("us"+number).innerHTML="<img src='/subscribe.jpg' alt='subscribe' />";
    }
  }
xmlhttp.open("GET","/unsubscribe.php?id="+number,true);
xmlhttp.send();
}

4 个答案:

答案 0 :(得分:1)

浏览器在AJAX API中存在分歧,使用一些维护良好的库(如jQuery)来编写兼容且简单的代码是明智之举。如果您不需要大量功能,可以尝试此线程中的其他建议。

AJAX Only Javascript Library

答案 1 :(得分:0)

更改HTML:使用onClick处理程序而不是href:

<a id='us$id' href="#" onclick="unsubscribe($id);">

这可确保操作发生在点击上,但不会重定向浏览器的目标页面(这就是为什么您的功能目前只会触发一次)。

根据页面的布局,当点击发生时,您可能会在页面的“加加”中找到上述结果 - 如果是这样,您可以尝试从点击处理程序返回false:

<a id='us$id' href="#" onclick="unsubscribe($id); return false;">

答案 2 :(得分:0)

我认为名称us$id$id存在问题。如果你没有使用jQuery,那么$符号没什么特别的,它是一个简单的字符。因此,us$id$id不相关,$id只是us$id的子字符串。因此,使用未定义的参数调用unsubscribe($id)。如果您想要替换us$id下的图片,那么这将无效,因为getElementById("us"+number)将无法找到该元素。

答案 3 :(得分:0)

移动xmlhttp.open(“GET”,“/ unsubscribe.php?id =”+ number,true);在xmlhttp.onreadystatechange = function()之前。

这是ajax订单:

  1. open()
  2. 的onreadystatechange
  3. 发送()