1

我正在尝试创建一个简单的投票页面。每边有几个链接,当用户点击向上箭头时,投票被计算,投票计数值增加。现在一切正常,除了当投票增加时,新值出现在 upvote 箭头的顶部(这是有道理的,因为我正在呼应新值)。我无法弄清楚如何将更新后的投票数设置到应该显示投票数的 SPAN 中。

这是代码: HTML

<?php
$sql=mysql_query("SELECT * FROM discussion_links WHERE link_side = 'Michigan'");
while($row = mysql_fetch_array($sql)) {
    $link_id=$row['link_id'];
    $url=$row['link_url'];
    $title=$row['link_title'];
    $source=$row['link_source'];
    $votes=$row['vote_count'];
?> 
<div class="top-links-wrapper">
    <div class="link-info">
        <a class="link-title" href="http://<?php echo $url ?>"><?php echo $title . "</a>"; ?>
        <p class="link-source"><?php echo $source . "</p>" ?>
    </div>
    <div class="link-vote-wrapper">
        <div class="link-votes">
            <span><?php echo $votes; ?></span>
        </div>
        <a href="#" class="vote" id="<?php echo $link_id; ?>" name="up" title="Up vote"></a>
    </div>
</div>
<?php   
    }
?>

我想将下面 PHP 函数返回的值替换为上面代码中的 SPAN。

PHP

<?php
$ip=$_SERVER['REMOTE_ADDR']; 

if($_POST['id']) {
    $id=$_POST['id'];
    $id = mysql_escape_String($id);
    //Verify IP address in Voting_IP table
    $ip_sql=mysql_query("select ip_add from Voting_IP where link_id_fk='$id' and ip_add='$ip'");
    $count=mysql_num_rows($ip_sql);

    if($count==0) {
        // Update Vote.
        $sql = "update discussion_links set vote_count=vote_count+1 where link_id='$id'";
        mysql_query( $sql);
        // Insert IP address and Message Id in Voting_IP table.
        $sql_in = "insert into Voting_IP (link_id_fk,ip_add) values ('$id','$ip')";
        mysql_query( $sql_in);
    }
    else {
        echo "<script>alert('You have already voted');</script>";
    }
    $result=mysql_query("select vote_count from discussion_links where link_id='$id'");
    $row=mysql_fetch_array($result);
    $up_value=$row['vote_count'];
    echo $up_value;
}
?>

这个$up_value是我想替换 H​​TML 中当前投票计数的值。

jQuery

<script type="text/javascript">
    //<![CDATA[
    var $j = jQuery.noConflict();
    $j(function() {
        $j(".vote").click(function() {
            var id = $j(this).attr("id");
            var name = $j(this).attr("name");
            var dataString = 'id='+ id ;
            var parent = $j(this);

            if (name=='up') {
                $j(this).fadeIn(200).html('<img src="dot.gif" />');
                $j.ajax({
                    type: "POST",
                    url: "up_vote.php",
                    data: dataString,
                    cache: false,

                    success: function(html) {
                        parent.html(html);
                    } 
                });
            }
            return false;
        });
    });
    //]]>
</script>

谢谢,任何帮助将不胜感激。

4

1 回答 1

1

假设您(int)在函数中返回了适当的总数success,那么您应该将 span 元素的 InnerHTML 设置为该值

如果您要给每个link-votes元素一个唯一的 ID 并使用该 ID 来更改元素的 ID,InnerHTML那将会很方便span。关于ajax成功

由于您已经将vote_id与事件处理程序相关联,因此您可以简单地为span id元素添加一个前缀,然后在success函数中调用如下内容:

       $("#myPrefix"+id).html(html);
于 2012-06-16T02:29:57.743 回答