2012-02-20 11 views
0

に、我々は3(または百)を持っていると仮定し、同一のAJAX機能:複数の同一のAJAX機能1

<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> 

そして、我々は3(または百)を持つ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を元に、各ボタンの出力が異なります。 問題は、すべてのAJAX関数を1つのAJAX関数に結合する方法です。 foreachループで?

答えて

0

パラメータとして要素のidを受け入れ投票と呼ばれる一つの機能、作成します(私はforループのPHPを想定してい

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 ($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

出力はすべてのボタンで同じですが、ただ1つである必要があります。他は同じままでなければならない。 – JohnK

+0

申し訳ありませんが、ボタンのonclick引数の関数にidを渡すのを忘れていました(私は自分の答えを更新しました)。それがどのように動作するかを確実にするために、すべてのdivがvote1、vote2、vote3などの一意のIDを持つようにし、同じIDをvote関数に渡します。 –

+0

ありがとう) – JohnK

関連する問題