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();
}
答案 0 :(得分:1)
浏览器在AJAX API中存在分歧,使用一些维护良好的库(如jQuery)来编写兼容且简单的代码是明智之举。如果您不需要大量功能,可以尝试此线程中的其他建议。
答案 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订单: