几个相同的AJAX功能一个
问题描述:
假设我们有三个(或百)相同AJAX功能:几个相同的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循环?
答
创建一个名为票一个功能,即接受元素作为参数的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循环,但可以是任何东西):
<?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
}
?>
输出将在所有按钮上相同,但应该只在一个上。其他人应该保持不变。 – JohnK 2012-02-21 01:20:29
对不起,我忘了将ID传递给按钮的onclick参数中的函数(我已更新了我的答案)。为确保它的工作方式,请确保每个div都有一个唯一的id,如vote1,vote2,vote3等,并将相同的id传递给vote函数。 – 2012-02-21 02:40:55
明白了。谢谢 ) – JohnK 2012-02-21 03:30:46