【问题标题】:get variable from php form which is in repeating loop从重复循环中的php表单获取变量
【发布时间】:2014-01-09 16:06:37
【问题描述】:

我在 while 循环中有不同 id 的 php 表单。

<?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?

【问题讨论】:

    标签: javascript php jquery


    【解决方案1】:

    您的循环包含单独的 form 字段。当您点击提交时,它只会提交相应的表单,而不会提交其他表单。

    您可能想要做的是将form 字段移出循环,以便传递所有petIds。就目前而言,您需要将名称更新为 pet[] 之类的名称,以便 PHP 知道它是 petIds 的数组。

    见:Posting array from form

    编辑

    看来真正的问题是:

    当我单击一个 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();
        });
    });
    

    见:http://jsfiddle.net/jwk2J/

    【讨论】:

    • 如何为每个变量获取合适的值?
    • 我尝试将其设为数组。我正在获取所有宠物 ID。但是,如何在 php 中识别选择了哪一个?
    • 所以你想接收所有的petId,但只关心一个?为什么不直接发送那个?
    • 这就是我需要做的。我有所有宠物的清单。我只想发送一个我会选择的。所以,onclick 我需要将特定的宠物 ID 发送到 php。
    • 啊,所以当您单击特定宠物时,您希望它触发(AJAX?)对您的 PHP 的请求?
    【解决方案2】:

    您需要将 &lt;form method="post" name="petForm" id="petForm"&gt; 移到 while 循环之外

     <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();
     }
    

    【讨论】:

    • 在 alert(petId) 中,我得到了不同的宠物 ID。但是,在表单提交中,我只得到最后一个元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 2019-11-30
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    相关资源
    最近更新 更多