2012-02-20 71 views
0

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

回答

0

创建一个名为票一个功能,即接受元素作为参数的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 
} 
?> 
+0

输出将在所有按钮上相同,但应该只在一个上。其他人应该保持不变。 – JohnK 2012-02-21 01:20:29

+0

对不起,我忘了将ID传递给按钮的onclick参数中的函数(我已更新了我的答案)。为确保它的工作方式,请确保每个div都有一个唯一的id,如vote1,vote2,vote3等,并将相同的id传递给vote函数。 – 2012-02-21 02:40:55

+0

明白了。谢谢 ) – JohnK 2012-02-21 03:30:46