从几个项中获取一个id以在AJAX请求中使用它们

时间:2013-09-18 11:07:48

标签: javascript php jquery ajax

让我向你解释一下我的问题。

我有一个包含多个项目的数据库。我做了一个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次相同的数组:/

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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() },