让我向你解释一下我的问题。
我有一个包含多个项目的数据库。我做了一个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次相同的数组:/
答案 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() },