jQuery的工作时间只有一半

时间:2011-10-24 23:33:18

标签: jquery mysql ajax button href

我有两个“按钮”(喜欢/不喜欢),它们实际上是附加到href标签的图像,当用户点击时,值会被发送到我的数据库。 #Messages显示check.php的输出,它只返回值。 jQuery代码与按钮的html一起位于循环内。

奇怪的是,我的代码仅适用于Like按钮,并且只有在我的代码中删除了不喜欢按钮时。不喜欢按钮本身(如从代码中删除的按钮)根本不起作用,如果两个按钮都被编码,则两个按钮都不起作用。

另外,#like应该在#dislike之前显示,但是在我的页面上#dislike出现在#like的左边,这不应该发生(它应该出现在#like的右边) 。有什么想法吗?

开始循环:

<?php
$data = mysql_query("SELECT * FROM Contests");

while($row = mysql_fetch_array( $data )){
$query = mysql_query("SELECT * FROM userContests WHERE userID='$userID' AND contestID='$row[contestID]';") or die(mysql_error()); 
$checked = mysql_fetch_assoc($query);
?>

我的jQuery(如果我删除了#dislike,那么#like就行了。如果我删除了#like,#alt就行了。当两者都存在时,都不起作用):

<script type="text/javascript">
$(document).ready(function() {
    var checked = <?php echo $checked['value']; ?>;
    var postID = <?php echo $row['postID']; ?>;
    var userID = <?php echo $current_user->ID; ?>;

    if (checked == 1) {
        $('#post_<?php echo $row['postID']; ?>').addClass('like'); 
    } else if (checked == 0) {
        $('#post_<?php echo $row['postID']; ?>').addClass('dislike'); 
    }

    $('#like_<?php echo $row['postID']; ?>').click(function(liked) {

        $.ajax({
            url: 'check.php',
            type: 'POST',
            data: 'userID=' + userID + '&postID=' + postID + '&value=' + '1',
            success: function(result) {
                $('#Message_<?php echo $row['postID']; ?>').html('').html(result).prependTo('#post_<?php echo $row['postID']; ?>');
            }
        });

        $('#post_<?php echo $row['postID']; ?>').removeClass('dislike').addClass('like');
        if (showLikes.attr('checked')) {
            $('#post_<?php echo $row['postID']; ?>').toggle();
        }
    });

    $('#dislike_<?php echo $row['postID']; ?>').click(function(disliked) {

        $.ajax({
            url: 'check.php',
            type: 'POST',
            data: 'userID=' + userID + '&postID=' + postID + '&value=' + '0',
            success: function(result) {
                $('#Message_<?php echo $row['postID']; ?>').html('').html(result).prependTo('#post_<?php echo $row['postID']; ?>');
            }

        $('#post_<?php echo $row['postID']; ?>').removeClass('like').addClass('dislike'); 
        if (showDislikes.attr('checked')) {
            $('#post_<?php echo $row['postID']; ?>').toggle();
        }
    });

我的HTML:

<div id="post_<?php echo $row['postID']; ?>" class="post">
<div id="post_<?php echo $row['postID']; ?>_inside">
    <div>
        <a id="like_<?php echo $row['postID']; ?>" class="like" href="#"><span></span></a>
    </div>
    <div>
        <a id="dislike_<?php echo $row['postID']; ?>" class="dislike" href="#"><span></span></a>
    </div>
    <b><?php echo $row['Title']; ?></b><br>
    Expires: <?php echo $row['Exp']; ?><br>
    <ul id="listM"></ul> 
</div>
</div>
<div id="Message_<?php echo $row['postID']; ?>" class="reminder"></div>

结束循环:

<?php 
} 
?>

我的CSS:

a.like {
float: right;
background: url(images/entered.png) no-repeat top center;
height: 30px;
width: 28px;
}

a.like:active {
float: right;
background: url(images/entered.png) no-repeat bottom center;
height: 30px;
width: 28px;
}

a.dislike {
float: right;
background: url(images/not-interested.png) no-repeat top center;
height: 30px;
width: 28px;
}

a.dislike:active {
float: right;
background: url(images/not-interested.png) no-repeat bottom center;
height: 30px;
width: 28px;
}

那么可能会发生什么?如果#like在没有#dislike的情况下工作,那么为什么#dislike会在没有#like的情况下工作?

1 个答案:

答案 0 :(得分:0)

我设法通过在变量中插入通过ajax发送的名为value的值来解决问题。

我不知道为什么它在硬编码时不起作用但你去了。