javascript - 动态更改表单操作不适用于 MailChimp
问题描述
我正在使用一个复选框来动态更改 MailChimp 表单上的表单操作。加载 DOM 后,表单操作 URL 如下所示:
https://X.us3.list-manage.com/subscribe/post?u=X&id=X&EBIRD=XYZ
当我提交表单时,XYZ 的 EBIRD 值被推送到 MailChimp。现在,当我选中复选框时,我可以从 DOM 和控制台看到新的表单操作是这样的:
https://X.us3.list-manage.com/subscribe/post?u=X&id=X&EBIRD=NEW-VALUE
那么为什么提交表单仍然会推送 XYZ 而不是 NEW-VALUE?我一直在联系 MailChimp 技术支持。他们说在页面上选择“查看源代码”时,旧值仍然存在。但这不只是因为这就是页面最初的加载方式吗?
相关HTML:
<form action="https://X.us3.list-manage.com/subscribe/post?u=X&id=X&EBIRD=XYZ" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
相关的jQuery:
var formActionYes = "https://X.us3.list-manage.com/subscribe/post?u=X&id=X&EBIRD=NEW-VALUE";
var formActionNo = "https://X.us3.list-manage.com/subscribe/post?u=X&id=X&EBIRD=NEW-VALUE-2";
$('#cu-ebird').change(function() {
if(this.checked) {
$("#mc-embedded-subscribe-form").prop('action',formActionYes);
console.log($("#mc-embedded-subscribe-form").prop('action'));
} else {
$("#mc-embedded-subscribe-form").prop('action',formActionNo);
console.log($("#mc-embedded-subscribe-form").prop('action'));
}
});
控制台记录我想要的。DOM 显示了我想要的。MailChimp 接收旧值。
我错过了什么?
解决方案
这可以通过根本不尝试更改表单操作来解决。只需从表单操作中删除合并字段。相反,您需要在表单中添加一个隐藏的输入字段:
<input id="ebird" type="hidden" name="EBIRD" value="">
然后使用脚本更改它的值:
$("#ebird").attr('value','NEW-VALUE');
瞧,一切都在 MailChimp 中显示出来。
推荐阅读
- javascript - React - 让 XLSX 进入状态?
- c++ - gdb 找不到当前函数的边界
- android - 当用户收到短信时创建通知
- .net - 使用 Quartz.Net 在 2 节点集群中的首选节点上安排特定作业
- java - Webdriver (Java) - [ChromeDriver: chrome on XP] 打印问题
- javascript - 使用 Javascript 进行因子分解
- r - 为什么条形图不根据反应数据框更新?
- c# - 使用反射映射相似对象:对象与目标类型不匹配
- c++ - MSVC 2017 在单个翻译单元中违反静态初始化顺序
- tableau-api - Tableau 中两个度量总计之间的差异