几个相同的AJAX函数

时间:2012-02-20 23:42:36

标签: ajax function

假设我们有三个(或一百个)相同的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循环中?

1 个答案:

答案 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
}
?>