通过 Ajax 将禁用的输入的值传递给 PHP 表单提交


Pass a disabled input's value via Ajax to a PHP form submit

我有两个禁用的输入字段(城市和州),当在表单中填写第三个字段(邮政编码)时会自动计算,其相关部分是:

<form method="post" name="myemailform" action="submit.php">
    <input type="text" name="home_address_city" id="home_address_city" disabled>
    <input type="text" name="home_address_state" id="home_address_state" disabled>
    <input type="submit" name="Submit" id="submit_button">
</form>

然后,我获取表单数据并通过ajax将其提交给通过电子邮件发送的PHP脚本:

$(function(){
    $('form').on('submit', function(e){
        e.preventDefault();
        $.ajax({
            type: $(this).attr('method'),
            url: $(this).attr('action'),
            data: $(this).serialize()
        });
    });
});

然后,PHP 会按如下方式获取所有内容:

extract($_POST, EXTR_PREFIX_SAME, "extr");

并且应该在电子邮件正文中输出它,如下所示:

$email_body = "City:'t$home_address_city'n"."State:'t$home_address_state'n";

这些disabled字段以前是手动填写的,并且通过电子邮件发送它们没有问题。 由于禁用它们,它们不会通过电子邮件发送,但其他一切都可以正常工作。 如果我删除disabled或将其替换为 readonly . (考虑并拒绝使用 readonly,因为它允许您专注于字段并选择文本,并且客户端根本不希望用户与字段交互。

那么如何将disabled输入字段的值传递给 PHP 脚本呢?

如上面的注释所示,您可以使用 JQuery 在$.ajax调用之前启用 disabled input 元素。 这篇文章有细节。