首页 > 解决方案 > AJAX 表单只执行一次(第一次输入)

问题描述

我通过循环循环输出 sql 选择行while。每行都有自己的形式。只有第一种形式有效。其他表单只是刷新页面没有我们的任何结果。在通过 AJAX 提交表单时执行 update.php 函数。它只在第一个输入字段起作用,不知道如何触发其他字段。

PHP

echo " <div class=\"col-6 flex-vcenter-items fs-1\">
    <form id='form".$row["id"]."' action='' method='POST'>
         <input id='id' name='potnik' value='".$row["id"]."' type='hidden' /> 
         <input id='cas' class=\"form-control cas".$row["id"]." fancy-border\" type=\"text\" name=\"posodobljeni_cas\"/>
         <input class='btn btn-outline-primary' id='submit' type='submit' value='Nastavi uro'>
     <label id=\"info\"></label>
 </form>
</div>";

JS

$( document ).ready(function() {
//Async update
    $(function () {
        let idrow = $("#id").val();
        $('#form'+idrow).on('submit', function (e) {

            let updaterow = "update.php?id=";
            console.log(updaterow + idrow);
            e.preventDefault();

            $.ajax({
                type: 'post',
                url: updaterow + idrow,
                data: $('#form'+idrow).serialize(),
                success: function () {
                    console.log('ura posodobljena');
                    //Koda za vstavljanje
                    console.log("Prejšnji čas",$("#id-ura"+idrow).text());
                    $("#id-ura"+idrow).replaceWith( $(".cas"+idrow).val() );
                    console.log("Novi čas",$(".cas"+idrow).val());
                }
            });
        });
    });
});

标签: phpjqueryajax

解决方案


基本的 HTML 规则是每个元素都有 uniqueid,因为你forms在循环中创建我将使用classes而不是id's

echo " <div class=\"col-6 flex-vcenter-items fs-1\">
    <form class='form' data-id='".$row["id"]."' action='' method='POST'>
         <input  name='potnik' value='".$row["id"]."' type='hidden' /> 
         <input  class=\"form-control cas".$row["id"]." fancy-border\" type=\"text\" name=\"posodobljeni_cas\"/>
         <input class='btn btn-outline-primary' type='submit' value='Nastavi uro'>
        <label class=\"info\"></label>
    </form>
</div>";

现在我将根据类更改 jQuery 代码:-

$( document ).ready(function() {
    $('input[type=submit]').on('click', function (e) {
        e.preventDefault();
        var obj = $(this);
        let idrow = obj.closest("form").data('id'); // i have used data-id in forms
        let updaterow = "update.php?id=";
        $.ajax({
            type: 'post',
            url: updaterow + idrow,
            data: obj.closest("form").serialize(),
            success: function () {
                //change these code also based on classes
                console.log('ura posodobljena');
                console.log("Prejšnji čas",$("#id-ura"+idrow).text());
                $("#id-ura"+idrow).replaceWith( $(".cas"+idrow).val() );
                console.log("Novi čas",$(".cas"+idrow).val());
            }
        });
    });
});

推荐阅读