axios 我想通过while循环中的按钮来发布表单数据,这样可以吗?

cx6n0qe3  于 2022-11-05  发布在  iOS
关注(0)|答案(1)|浏览(155)

这是我在循环时尝试发布表单数据的代码

<?php
if ($query->num_rows > 0) {
    $i = 0;
    while ($row12 = $query->fetch_assoc()) {
        $i++;
?>
<form class="yatis"id="foo" method="POST">
    <div class="flex items-center justify-between">
        <span class="text-sm font-semibold text-black dark:text-black">
            <?php echo $row12["sched2"]; ?>
        </span>
        <input type="hidden" id="unq" name="unq" value="<?php echo $row["unique_id"]; ?>">
        <button type="submit" id="subm" name="submit" class="eut px-3 py-1 text-sm font-bold text-gray-100 transition-colors duration-300 transform bg-gray-600 rounded cursor-pointer hover:bg-gray-500">Enroll</button>                
    </div>
</form>
<?php }} else {
    echo 'No records found...';
}
?>

每当我点击一个按钮,它张贴在每个按钮相同的数据。

<script>
var submit1 = document.querySelectorAll(".eut");
for (let i = 0; i < submit1.length; i++) {
    submit1[i].addEventListener("click", function(e) {
        e.preventDefault();
        var formData = new FormData();
        var s1 = document.getElementById("unq").value;    
        formData.append("us1", s1);
        var url = "enroll.php";
        axios.post(url, formData, {
            headers: {
                'Content-Type': 'multipart/form-data
            }
        })
    });
}

我想张贴在不同的形式,但当我试图点击按钮,它的第一个形式张贴相同的数据。

3pmvbmvn

3pmvbmvn1#

A)使用id时,它在jQuery中被视为唯一参数,这意味着整个文档中只有一个元素可以具有该id,因此在您的情况下,document.getElementById("unq")将只给予第一个表单元素
B)完全不需要重复按钮点击代码,点击任何按钮都可以获得最接近的表单并提交。要做到这一点,请按以下步骤操作:

<script> 
    $(document).ready(function(){   
        $(".eut").click(function(e){ 
            e.preventDefault();
            var formData = new FormData( $(this).closest('form')[0] );
            var url = "enroll.php";
            axios.post(url, formData, {             
                headers: {              
                    'Content-Type': 'multipart/form-data'
                }       
            })  
        }); 
    }); 
</script>

相关问题