0

让我解释一下我的问题。

我有一个数据库,里面有几个项目。我做了一个while循环来显示一个隐藏的输入,其中每个项目的id作为一个值。我想获取每个项目的每个 id 以在 AJAX 请求中使用它们来检查其他数据库表中的内容。

这是我的while循环:

$reqfollow = db_query('SELECT following_id FROM following WHERE follower_id = ?', array($_SESSION['mc']['id']));
    while($follow = $reqfollow->fetch())
        {

$reqitems = db_query('SELECT * FROM items WHERE user_id = ? ORDER BY date DESC', array($follow['following_id']));
    while($items = $reqitems->fetch())
            {
?>

    <input type="hidden" class="id" value="<?php echo $items['id']; ?>"> //this is where i have the id of each item

<?php } ?>

我有一些 jQuery 来获取这些 id:

function checkingfetchresult(userid){

            $.post("ajax/checkingfetchresult.php", { userid: userid }, //first of all, I check how many item have been displayed, here it is eaqual to 3
            function(check){
            console.log(check); //So 3 here
            for (var i = 0; i<check; i++){
                var id = $(".id").val(); //I try to get the id of each but I only get the first one
                console.log(id); //Only the first one
            }
        });
}

但正如我的代码中所说,我只得到第一项的 id。也许我应该尝试用一个数组来做,但是如果我这样做了,我怎么能在数组的时候只得到一个 id 来做我的另一个 AJAX 请求:

function checkinglikebutton(id){



    $.post("ajax/checkinglikebutton.php", { id: id },
            function(check){
            if (check == 1){
                //show the Like button
                $("#dislike").hide();
            }
            else if (check == 0){
                //show the Dislike button
                $("#like").hide();
            }
            else{
                alert('An error has occured');
            }
    });

}

我真的需要帮助,因为我有点迷失了。

以下是我如何使用数组来做到这一点:

function checkingfetchresult(userid){

            $.post("ajax/checkingfetchresult.php", { userid: userid },
            function(check){
            console.log(check);
                var id = [];
                $(".id").each(function(){
                    id.push($(this).val());
            });
                console.log(id);
        });
}

但我有 3 倍相同的数组:/

4

2 回答 2

0
var ids = $(".id"),r=[];
for (var i = 0; i<check; i++){
   var id = ids.eq(i).val();          
   console.log(id); //Only the first one
   r.push(id);
}
return r;
于 2013-09-18T11:15:51.117 回答
0

这不是确切的解决方案,但我认为您可以尝试以下方法:

var $inputs = $("input:hidden");
var i = 0;
var ids = [];
$inputs.each(function() {
    ids.push($(this).val());
    i++;
    if (i == check) {
        return false;
    }
});
console.log(ids); //1,2,3,4,5...

然后在 ajax 中使用 id 为:

$.post("ajax/checkinglikebutton.php", { id: ids.join() },

于 2013-09-18T11:15:59.680 回答