1

我正在尝试使用 jQuery 提交表单,但 serialize 方法返回 null。怎么了?非常感谢您的帮助。

这是我的代码。

HTML/PHP 代码

<TR>
    <FORM id="frmUnitDetails<?php echo $ctr;?>" name="frmUnitDetails<?php echo $ctr;?>" action="./getServPersonsStatsUnit.php" method="post" target="_blank">
    <TD align="center" width="300px">
        <label id="unit<?php echo $ctr;?>" for="unit<?php echo $ctr;?>"><?php echo $row["UNIT"];?></label>
        <input type="hidden" id="unit<?php echo $ctr;?>" name="unit<?php echo $ctr;?>" value="<?php echo $row["UNIT"];?>">
        <input type="hidden" id="month<?php echo $ctr;?>" name="month<?php echo $ctr;?>" value="<?php echo $date;?>">
        <br>
        <INPUT id="showDetails" name="showDetails" type="submit" value="Show Details" onclick="submitFrm('frmUnitDetails<?php echo $ctr;?>')">
    </TD>
    <TD align="right">
        <INPUT type="text" id="ele<?php echo $ctr;?>" name="ele<?php echo $ctr;?>" value="<?php echo $row["ELECT_STAFF"];?>" style="text-align:right;" size="3" readonly="readonly">
    </TD>
    <TD align="right">
        <INPUT type="text" id="ele_sta_cnt<?php echo $ctr;?>" name="ele_sta_cnt<?php echo $ctr;?>" value="<?php echo $ele_sta_cnt;?>" style="text-align:right; color:<?php echo $txtEleClr; ?>" size="3" readonly="readonly">
    </TD>
    <TD align="right">
        <INPUT type="text" id="sec<?php echo $ctr;?>" name="sec<?php echo $ctr;?>" value="<?php echo $row["SEC_GUARD"];?>" style="text-align:right;" size="3" readonly="readonly">
    </TD>
    <TD align="right">
        <INPUT type="text" id="sec_grd_cnt<?php echo $ctr;?>" name="sec_grd_cnt<?php echo $ctr;?>" value="<?php echo $sec_grd_cnt;?>" style="text-align:right; color:<?php echo $txtSecClr; ?>" size="3" readonly="readonly">
    </TD>
    </FORM>
</TR>

以上 PHP 生成一系列 HTML 表单,通过单击相应的 From Submit 按钮选择提交

生成的 HTML 代码

<tr>
    <form id="frmUnitDetails1" name="frmUnitDetails1" action="./getServPersonsStatsUnit.php" method="post" target="_blank"></form>
    <td align="center" width="300px">
        <label id="unit1" for="unit1">GM(ADMIN)</label>
        <input type="hidden" id="unit1" name="unit1" value="GM(ADMIN)">
        <input type="hidden" id="month1" name="month1" value="02-Dec-2021">
        <br>
        <input id="showDetails" name="showDetails" type="submit" value="Show Details" onclick="submitFrm('frmUnitDetails1')">
    </td>
    <td align="right">
        <input type="text" id="ele1" name="ele1" value="2" style="text-align:right;" size="3" readonly="readonly">
    </td>
    <td align="right">
        <input type="text" id="ele_sta_cnt1" name="ele_sta_cnt1" value="3" style="text-align:right; color:red" size="3" readonly="readonly">
    </td>
    <td align="right">
        <input type="text" id="sec1" name="sec1" value="6" style="text-align:right;" size="3" readonly="readonly">
    </td>
    <td align="right">
        <input type="text" id="sec_grd_cnt1" name="sec_grd_cnt1" value="7" style="text-align:right; color:red" size="3" readonly="readonly">
    </td>
    
</tr>

jQuery/JScript 代码

function submitFrm(x)
{
    alert(x);    
    event.preventDefault();

    var formValues= $(x).serialize();
    alert(formValues);
    $.post("./getServPersonsStatsUnit.php", formValues, function(data){
        // Display the returned data in browser
        $("#divShowDetailsOutPut").html(data);
    });
}

4

2 回答 2

0

通过在 TD 中移动 FORM 标记并使用 INPUT 元素的 FORM 属性更改代码后,现在一切正常。这是更改后的代码。

PHP 代码

<TR>
    <TD align="center" width="300px">
        <label id="unitLbl<?php echo $ctr;?>" name="unitLbl<?php echo $ctr;?>" form="frmUnitDetails<?php echo $ctr;?>" for="unitLbl<?php echo $ctr;?>"><?php echo $row["UNIT"];?></label>
        <input type="hidden" id="unit<?php echo $ctr;?>" name="unit<?php echo $ctr;?>" form="frmUnitDetails<?php echo $ctr;?>" value="<?php echo $row["UNIT"];?>">
        <input type="hidden" id="date<?php echo $ctr;?>" name="date<?php echo $ctr;?>" form="frmUnitDetails<?php echo $ctr;?>" value="<?php echo $date;?>">
        <br>
        <FORM id="frmUnitDetails<?php echo $ctr;?>" name="frmUnitDetails<?php echo $ctr;?>" action="./getServPersonsStatsUnit.php" method="post">
        <INPUT id="showDetails<?php echo $ctr;?>" name="showDetails<?php echo $ctr;?>" type="submit" value="Show Details" onclick="submitFrm('#frmUnitDetails<?php echo $ctr;?>')">
        </FORM>
    </TD>
    <TD align="right">
        <INPUT type="text" id="ele<?php echo $ctr;?>" name="ele<?php echo $ctr;?>" form="frmUnitDetails<?php echo $ctr;?>" value="<?php echo $row["ELECT_STAFF"];?>" style="text-align:right;" size="3" readonly="readonly">
    </TD>
    <TD align="right">
        <INPUT type="text" id="ele_sta_cnt<?php echo $ctr;?>" name="ele_sta_cnt<?php echo $ctr;?>" form="frmUnitDetails<?php echo $ctr;?>" value="<?php echo $ele_sta_cnt;?>" style="text-align:right; color:<?php echo $txtEleClr; ?>" size="3" readonly="readonly">
    </TD>
    <TD align="right">
        <INPUT type="text" id="sec<?php echo $ctr;?>" name="sec<?php echo $ctr;?>" form="frmUnitDetails<?php echo $ctr;?>" value="<?php echo $row["SEC_GUARD"];?>" style="text-align:right;" size="3" readonly="readonly">
    </TD>
    <TD align="right">
        <INPUT type="text" id="sec_grd_cnt<?php echo $ctr;?>" name="sec_grd_cnt<?php echo $ctr;?>" form="frmUnitDetails<?php echo $ctr;?>" value="<?php echo $sec_grd_cnt;?>" style="text-align:right; color:<?php echo $txtSecClr; ?>" size="3" readonly="readonly">
    </TD>
</TR>

于 2021-12-09T03:04:53.513 回答
0

您的表单是空的,这就是 serialize() 函数给您 null 的原因。确保输入在表单标签内。

通过仔细查看上面显示的 PHP 生成的 HTML 代码,表单的结束标记紧跟在开始标记关闭之后,因此从技术上讲它没有输入。因此,请确保生成的 HTML 正确完成,以便在表单标记内输入。

于 2021-12-08T17:13:07.380 回答