我们使用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表单。
我知道现在回答有点晚了,但我希望这能帮助到别人