2016-04-25 6 views
0

kann ich nicht das Radio Eingabewert erhalten für die Aktualisierung der Datenbank zu verwenden:Was ist falsch mit dem Ajax-Code und dem PHP-Radioeingang? In diesem Code

<script type="text/javascript"> 
function getVote() { 
    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("poll").innerHTML=xmlhttp.responseText; 
    } 
    } 
    var vote = $('input[name=optionid]:checked').val(); 
    xmlhttp.open("GET","poll_vote.php?vote="+vote); 
    xmlhttp.send(); 
} 

auf der gleichen Datei ist, den Code:

$options = mysql_query ("select * from options where pollid='poll'"); 
       while ($row1 = mysql_fetch_array($options)) 
       { $id = $row1['id']; 
        $option = $row1['choice']; 
        $votes = $row1['votes']; 
         echo '<form id="poll">'; 
         echo '<input type="radio" name="optionid" value="'.$id.'" onclick="getVote()" /><span>'.$option.'</span><br />'; 
       } 

         echo '</form>'; 

Wie Radio-Wert erhalten geprüft Verwenden Sie es auf der anderen Seite "poll_vote.php"? Übrigens sind die Optionen, die von dem Eingangsradio verwendet werden,

+1

Was ist '$ vote' in dieser Zeile' xmlhttp.open ("GET", "poll_vote.php? Vote =" $ vote); '? –

+1

'var vote = $ ('input [name = optionid]: überprüft'). Val(); xmlhttp.open ("GET", "poll_vote.php? Vote =" $ vote); 'das ist definitiv falsch. benutze 'xmlhttp.open (" GET "," poll_vote.php? vote = "+ vote);' – vaso123

+0

'" poll_vote.php? vote = "$ vote' - JavaScript verkettet Strings mit einem' + ', nicht einem' $ '. (Ich kenne keine Sprache, die ein '$' dafür verwendet ...) – David

Antwort

0

Offensichtlich weiß ich nicht, ob es andere Probleme gibt, aber mit diesen zwei Änderungen sollte getestet werden, was passiert, und vielleicht funktioniert es.

Javascript

function getVote() { 
    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("poll").innerHTML=xmlhttp.responseText; 
    } 
    } 
    var vote = $(this).attr('value'); 
    alert('your vote: ' + vote); // WITH THIS CHECK IF THE VOTE IS CORRECT 
    xmlhttp.open("GET","poll_vote.php?vote="+vote); 
    xmlhttp.send(); 
} 

PHP

$options = mysql_query ("select * from options where pollid='poll'"); 

echo '<form id="poll">'; 

while ($row1 = mysql_fetch_array($options)) 
{ $id = $row1['id']; 
    $option = $row1['choice']; 
    $votes = $row1['votes']; 
    echo '<input type="radio" name="optionid" value="'.$id.'" onclick="getVote()" /><span>'.$option.'</span><br />'; 
} 

echo '</form>'; 
+0

Wenn ich alert ('Ihre Stimme:' + Abstimmung); er sagte, ist nicht definiert und wenn ich alert ($ ("input [name = stimme]: überprüft"). val()); er zeigte den richtigen Wert, den ich brauchte. Gibt es eine Möglichkeit, diesen Wert zu speichern ($ ("input [name = vote]: checked"). Val()) in einem var? – Mido

+0

@Mido Auf diese Weise ... "var vote = $ (" input [name = vote]: checked "). Val();" Aber wenn es funktioniert, bedeutet das, dass du die PHP Version, die ich habe, bearbeitet habe. "[Name = vote]" sollte in dieser Version "[name = optionid]" sein. Aber wenn es funktioniert ... – Baro

0

Das Problem, das ich mit dem Hinweis, diese Zeile ist, echo '<form id="poll">'; wird wiederholt so viele wie die Rückkehr Anzahl der Zeilen gedruckt.

im Browser Sie haben,

<form id="poll"> 
    <input type="radio" name="optionid" value="<?php echo $id; ?>" onclick="getVote()"> 
<form id="poll"> 
    <input type="radio" name="optionid" value="<?php echo $id; ?>" onclick="getVote()"> 
<form id="poll"> 
    <input type="radio" name="optionid" value="<?php echo $id; ?>" onclick="getVote()"> 
<form id="poll"> 
    <input type="radio" name="optionid" value="<?php echo $id; ?>" onclick="getVote()"> 
<form id="poll"> 
    <input type="radio" name="optionid" value="<?php echo $id; ?>" onclick="getVote()"> 
. 
. 
. 

kommt es vor, Ihnen eine Reihe von wiederholten Formen, vor diesem Schluss-Tag

</form> 

biete ich Ihnen Ihren Code auf diese Weise für eine bessere Analyse anordnen

<?php $options = mysql_query ("select * from options where pollid='poll'"); ?> 
<form class="" id="poll" action="" method="post"> 
<?php while ($row1 = mysql_fetch_array($options)): ?> 
    <?php 
    $id  = $row1['id']; 
    $option = $row1['choice']; 
    $votes = $row1['votes']; 
    ?> 
    <input type="radio" name="option<?php echo $id; ?>" value="<?php echo $id; ?>" onclick="getVote()"> 
    <span><?php echo $option; ?></span> 
<?php endwhile; ?> 
</form> 

Und Ihre Form wie diese drucken,

<form id="poll"> 
    <input type="radio" name="option1" value="<?php echo $id; ?>" onclick="getVote()"> 
    <input type="radio" name="option2" value="<?php echo $id; ?>" onclick="getVote()"> 
    <input type="radio" name="option3" value="<?php echo $id; ?>" onclick="getVote()"> 
    <input type="radio" name="option4" value="<?php echo $id; ?>" onclick="getVote()"> 
</form> 

diesen teil notieren name="option<?php echo $id; ?>"? Ich habe es so gemacht, dass Sie einzigartige Variable für jeden Radio-Button haben können, und vergessen Sie nicht, Ihr Formular so zu machen <form class="" id="poll" action="" method="post">, so dass Sie Daten über Methodenpost gesendet haben.

Es kann nicht die Lösung sein, ich hoffe, das würde helfen.

+0

Bis jetzt ist alles in Ordnung. Aber welche Änderung muss ich an dem Ajax-Skript vornehmen, um den Änderungen, die Sie hier oben vorgenommen haben, zu entsprechen? Du hast nichts erwähnt – Mido

+0

Nichts wirklich, wenn alles in Ordnung ist, so toll. Dein Ajax könnte auch in Änderungen anwendbar sein, eigentlich ändere ich nichts an der Logik, korrigiere nur wenige Fehler – Fil

+0

, um die Umfragenleisten mit ihrem Prozentsatz anzuzeigen, ohne die Seite neu zu laden. Der Ajax-Code wird auch hier oben erwähnt – Mido