如何保存提交的HTML表单的服务器端副本


how to save a server-side copy of submitted HTML form?

我们使用HTML表单创建了一个调查问卷。该表单通过一个典型的ajax调用提交,如下所示:

$.ajax({
    url: sendResults.attr('action') + "?ajax=true",
    type: sendResults.attr('method'),
    data: sendResults.serialize(),
    success: confirm
});

但是,我们希望将提交的表单HTML的副本保存到服务器(而不是数据库中),以便将其呈现为PDF并附加到从另一个PHP脚本发送的确认电子邮件中。此HTML应包含复选框和单选按钮的"已检查"状态,因为它们已被用户更改。表单中没有文本区域。

这样做的一种方法是通过javaScript选择表单HTML,如下所示:

var html = "<html>" + document.getElementById('myForm').innerHTML + "</html>";

然后通过更改以下行将HTML与表单数据序列化并提交:

data: sendResults.serialize() + "&answers=" + html

然而,这需要ISP为操作PHP脚本覆盖一些防火墙规则,这可能不被认为是好的做法,而且可能存在安全风险!

那么,考虑到"正常"的序列化表单数据只是一个整数数组,是否有任何已知的方法将这些值"应用"到存储在服务器上的默认HTML表单,以获得提交的表单,从而将其呈现为PDF并附加到电子邮件?

提前感谢您的帮助。

尝试对html内容"&answers="+btoa(html) 进行编码

在服务器端对其进行解码。

我还建议使用post-request,而不是使用url参数。

检查此链接如何用JavaScript将字符串编码为Base64?

如果您获得输入的属性和值并将其插入数据库中,该怎么办?它将为您节省一些字节的空间,并使您的数据库表易于阅读和理解,因此当您必须生成PDF时,您可以选择并"重新创建"相同的HTML表单。

我知道现在回答有点晚了,但我希望这能帮助到别人