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

时间:2014-11-22 23:47:50

标签: php html ajax forms

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

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

1 个答案:

答案 0 :(得分:1)

正如上面的评论中所建议的,您可以使用JQuery在disabled调用之前启用input $.ajax元素。 This post有详细信息。