通过Mailchimp提交电子邮件返回错误、Javascript和php

通过Mailchimp提交电子邮件返回错误、Javascript和php,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我希望这是一个简单的问题。我正在使用Mailchimp API从我的网站提交一份简单的电子邮件注册表格。我现在正在尝试学习javascript,所以我正在尝试在不使用jQuery的情况下执行httprequest和回调。基本上,我正在尝试将在线找到的jQuery示例转换为香草Javascript。但是我的javascript有一些(几件事?)错误,我不明白 编辑:提交表单时,我会转到email-validate.php页面,并显示MailChimp返回的以下错误对象 {"type":"http:

我希望这是一个简单的问题。我正在使用Mailchimp API从我的网站提交一份简单的电子邮件注册表格。我现在正在尝试学习javascript,所以我正在尝试在不使用jQuery的情况下执行httprequest和回调。基本上,我正在尝试将在线找到的jQuery示例转换为香草Javascript。但是我的javascript有一些(几件事?)错误,我不明白

编辑:提交表单时,我会转到email-validate.php页面,并显示MailChimp返回的以下错误对象

{"type":"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/","title":"Invalid Resource","status":400,"detail":"The resource submitted could not be validated. For field-specific details, see the 'errors' array.","instance":"","errors":[{"field":"","message":"Required fields were not provided: email_address"},{"field":"email_address","message":"Schema describes string, NULL found instead"}]}
jQuery

(这实际上抛出了一个ajax(…)。成功不是控制台中的函数错误,但仍然提交表单FWIW)

我的Javascript(不起作用)

我的html

<form class="mc-form" method="POST" action="./email-validate.php">
    <h2 class="launch-alerts">Never miss a launch with Launch Alerts</h2>
    <label for="mc-email">Email Address:</label>
    <input type="email" id="mc-email" name="mc-email" autofocus="true" required/>
    <input type="text" value="pending" id="status" name="status" hidden/>
    <input type="submit" value="Submit">
</form>

永远不要错过发布警报的发布
电邮地址:
它使用一个php文件来验证和提交表单,如上面的链接所示。html和php在使用jQuery脚本时提交表单,但不是我的javascript,这意味着我的脚本有问题,但我对javascript太陌生,无法完全理解我试图做什么,以及我做错了什么

谢谢

编辑2:

PHP代码(直接从


请求.send()的数据参数必须是URL编码的字符串,您正在传递一个对象。jQuery会自动为您进行此转换;当您自己进行转换时,您也必须自己进行转换

var data = "email=" + encodeURIComponent(document.getElementById("mc-email").value);
您也没有正确地将提交功能添加到表单的
submit
事件中。它应该是:

document.getElementById("mc-form").addEventListener("submit", function submit(e){

您可以手动将URL参数添加到URL:

var endpoint = document.getElementById("mc-form").getAttribute('action') +
               "?email=" + document.getElementById("mc-email").value;
然后只做

request.send();

没有数据。

浏览器控制台中有什么错误?我在控制台中没有收到错误(尚未)。正在发送请求,但mailchimp返回错误。{“类型”:“资源”,“状态”:400,“详细信息”:“提交的资源无法验证。有关特定于字段的详细信息,请参阅“错误”数组。”,“实例”:“错误”:[{“字段”:“”“消息”:“未提供必填字段:电子邮件地址”},{“字段”:“电子邮件地址”、“消息”:“架构描述字符串,改为NULL”}]}好的。我尝试了这个,它返回了相同的错误。这让我相信我仍然发送了错误的信息。编辑了我的问题以显示从MailChimp返回的错误。在调用MailChimp API时,您的PHP脚本中一定有其他问题。@Barmar我想这只是缺少的url参数“email”Javascript的第二行是错误的。请参阅我更新的答案。尝试了几种不同的方法,但都不起作用。
document.getElementById("mc-form").addEventListener("submit", function submit(e){
var endpoint = document.getElementById("mc-form").getAttribute('action') +
               "?email=" + document.getElementById("mc-email").value;
request.send();