通过HTML表单提交JSON结构到MailChimp API+;JavaScript

通过HTML表单提交JSON结构到MailChimp API+;JavaScript,javascript,json,mailchimp,Javascript,Json,Mailchimp,感谢你的帮助,我相信这是一个真正的基本的头部打击。我正在设置一个简单的web前端,以便检查电子邮件地址是否已经是现有MailChimp列表的订户。现在我只想使用基本的HTML和JavaScript 我的MailChimp API密钥已签出,我可以运行只需要字符串数据的查询,但相关的API调用需要电子邮件地址的结构,并且我在下面的代码的任何变体中不断收到错误。我已经安装了node.js,只是从命令行运行它,查询确实可以处理相同的数据,所以我相信我就快到了,但需要您的帮助才能克服困难 下面是脚本和表

感谢你的帮助,我相信这是一个真正的基本的头部打击。我正在设置一个简单的web前端,以便检查电子邮件地址是否已经是现有MailChimp列表的订户。现在我只想使用基本的HTML和JavaScript

我的MailChimp API密钥已签出,我可以运行只需要字符串数据的查询,但相关的API调用需要电子邮件地址的结构,并且我在下面的代码的任何变体中不断收到错误。我已经安装了node.js,只是从命令行运行它,查询确实可以处理相同的数据,所以我相信我就快到了,但需要您的帮助才能克服困难

下面是脚本和表单的相关片段。如前所述,我在回复中收到以下错误消息:验证错误:{“email\”:\“请输入结构\/关联数组\”}”


函数collectAndSubmit(){
var emailAddy=document.getElementById(“emailAddy”).value;
var JSONemail={“电子邮件”:
{
“电子邮件”:emailAddy
}
};
document.getElementById(“email”).value=JSONemail;
document.getElementById(“apikey”).value=“M*Y*A*P*I*K*E*Y”
document.testform.submit();
}
电邮地址:


提前感谢您的帮助。

您的表单不正确。您可以查看他们的表单。您必须设置他们所谓的
电子邮件结构,它实际上是一个数组。您的电子邮件输入属性应该类似于

注意,
email[email]
它将使数据看起来像
“email”:{“email”:“input value”}


另外,如果您的api密钥被认为是一个秘密,那么将其隐藏在html表单中也不是一个好主意。

非常感谢——这就是问题所在;我一直在阅读他们的文档,我只是不知道如何传递该结构。我将用更正的版本更新原始帖子中的代码片段。如果您能再抽出一些时间的话接下来,您提到将api密钥(实际上应该是私有的)作为隐藏字段放置不是一个好主意,我完全同意。在这个基本设置中,什么是最好的选择,或者说我确实需要以某种方式在服务器端处理此问题?@Bret是的,如果api密钥是机密的,它必须存在于服务器上ide。因此,您的服务器端语言将创建api调用,而您的表单将提交到您的服务器。由于电子邮件数据现在可以直接从表单传入,而不是用javascript进行组装,因此更正后的/正常运行的代码片段将大大减少。以下是更正后的输入表单条目:电子邮件:
<script type="text/javascript">
function collectAndSubmit() {
        var emailAddy = document.getElementById("emailAddy").value;
        var JSONemail = {"email":
                            {
                                "email": emailAddy
                            }
                        };
        document.getElementById("email").value = JSONemail;
        document.getElementById("apikey").value ="M*Y*A*P*I*K*E*Y"
        document.testform.submit();
}
</script>
</head>
<body>
<form action="https://us2.api.mailchimp.com/2.0/helper/lists-for-email" method="post" name="testform">
    Email Address: <input type="text" id="emailAddy" name="emailAddy" />
    <input type="hidden" id="apikey" name="apikey" />
    <input type="hidden" id="email" name="email" />
    <br>
    <input type="button" value="Check Email" onclick="collectAndSubmit()" />
</form>
</body>
</html>