Несколько идентичных функций AJAX для одного - PullRequest
0 голосов
/ 21 февраля 2012

Предположим, у нас есть три (или сто) идентичных функций 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>

Причинаесть отдельная функция для каждой кнопки, это разные выходные данные для каждой кнопки, основанные на различном параметре string_ID для ex. Вопрос в том, как объединить все функции AJAX в одну функцию AJAX, имея в виду, что кнопки находятся в цикле foreach.

1 Ответ

0 голосов
/ 21 февраля 2012

Создайте одну функцию под названием голосования, которая принимает идентификатор элемента в качестве параметра:

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
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...