假设我们有三个(或一百个)相同的AJAX函数:
<script type="text/javascript">
function vote1(url)
{
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("voting1").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
}
function vote2(url)
{
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("voting2").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
}
function vote3(url)
{
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("voting3").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
}
</script>
我们在foreach循环中有三个(或一百个)相同的按钮:
<div id="voting1">
<form><input type="button" onclick="vote1('votes.php?parameter1')" value="vote">
</form></div>
<div id="voting2">
<form><input type="button" onclick="vote2('votes.php?parameter2')" value="vote">
</form></div>
<div id="voting3">
<form><input type="button" onclick="vote3('votes.php?parameter3')" value="vote">
</form></div>
每个按钮具有单独功能的原因是每个按钮上的输出不同,基于ex ...的不同参数string_ID。 问题是 - 如何将所有AJAX函数组合成一个AJAX函数,记住按钮是在foreach循环中?
答案 0 :(得分:0)
创建一个名为vote的函数,它接受元素的id作为参数:
function vote(id, url)
{
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(id).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
}
然后只需将你的变量内容传递给你的html(我假设一个php for-loop但可以是任何东西):
<?php
for ($i=0 ; $i<$max ; $i++) {
?>
<div id="voting<?php echo $i; ?>">
<form><input type="button" onclick="vote('voting<?php echo $i; ?>', 'votes.php?parameter<?php echo $i; ?>')" value="vote">
</form></div>
<?php
}
?>