我在while循环中使用不同的id。
<?php
while($pet = $results->fetch(PDO::FETCH_ASSOC)){
?>
<form method="post" name="petForm" id="petForm">
<ul id="listAvatars">
<li>
<input type='text' name='pet' id='pet' value='<?=$pet['PetId']?>' />
<img src="<?=PET_AVATAR.$pet['Avatar']?>" class="listAvatar">
<span onclick='setPet(<?=$pet['PetId']?>)' id="avatarName"><?=$pet['PetName']?></span>
</li>
</ul>
</form>
<?php
}
?>
我想在点击活动中获得不同的宠物ID。我通过此功能在点击名称上获得有效的宠物ID。
function setPet(petId){
alert(petId);
document.getElementById("petForm").submit();
}
PHP:
if(isset($_POST['pet'])){
$petId = $_POST['pet'];
print_r($petId);
}
通过提交此表单,我只获得第一个宠物的ID。我应该怎么做才能在选择中获得适当的宠物ID?
答案 0 :(得分:2)
您的循环包裹在单独的form
字段上。当您单击“提交”时,它只会提交相应的表单而不是其他表单。
您可能想要做的是将form
字段移到循环之外,以便传递所有 petIds 。尽管如此,您需要将名称更新为类似pet[]
的内容,以便PHP知道它是 petIds 的数组。
修改强>
看来真正的问题是:
当我点击petId时,如何将该petId发布到PHP脚本中 表格(不使用AJAX)。
HTML
<div id="pet-id-1" class="petid">Pet 1</div>
<div id="pet-id-2" class="petid">Pet 2</div>
<div id="pet-id-3" class="petid">Pet 3</div>
<form action="" method="post" id="pet_form">
<input type="hidden" name="pet_id" id="pet_id" value="" />
</form>
Javascript
$(document).ready(function() {
$('.petid').click(function() {
var pet_id = $(this).attr('id');
$("#pet_id").val(pet_id);
$("#pet_form").submit();
});
});
答案 1 :(得分:0)
您需要在while循环之外移动<form method="post" name="petForm" id="petForm">
<form method="post" name="petForm" id="petForm">
<input type='hidden' name='pet' id='pet' value='' />
<ul id="listAvatars">
<?php
while($pet = $results->fetch(PDO::FETCH_ASSOC)){
?>
<li>
<img src="<?=PET_AVATAR.$pet['Avatar']?>" class="listAvatar">
<span onclick='setPet(<?=$pet['PetId']?>)' id="avatarName"><?=$pet['PetName']?></span>
</li>
<?php
}
?>
</ul>
</form>
使用Javascript:
function setPet(petId){
alert(petId);
document.getElementById("pet").value=petId;
document.getElementById("petForm").submit();
}