我正在寻找一个非常简单的普通 js 客户端请求来将订阅者添加到活动监控列表中?我想它看起来像下面的请求,但该请求对我不起作用。我已尝试按照活动监视器 API 文档进行操作,但仍然卡住了,有人知道出了什么问题吗?
https://www.campaignmonitor.com/api/subscribers/
有点像……
function submitEmail(){
fetch(
"https://api.createsend.com/api/v3.2/subscribers/{listid}.{xml|json}",
// eg. "https://api.createsend.com/api/v3.2/subscribers/789209790.json"
{
method:"POST",
body: JSON.stringify({
"EmailAddress": "subscriber@example.com",
"Name": "New Subscriber",
"Resubscribe": true,
"RestartSubscriptionBasedAutoresponders": true,
"ConsentToTrack":"Yes"
})
})
.then(result => { console.log("Completed with result:", result); })
.catch(err => { console.error(err); });
}
document.querySelector('#submit').addEventListener("click", submitEmail);
例如。 https://codepen.io/QuiteQuinn/pen/LYydLZR?editors=1010
API 不谈.. 我知道如何发送 post 请求以将电子邮件添加到邮件列表,但由于核心要求之一是不被带到不同的页面,因此 recaptcha 请求将被忽略。这会导致订阅者被视为机器人,即使他们认为自己已加入列表。
<div class="newsletter-signup">
<h1 style="color:#e54319">Join our Newsletter</h1>
<form class="js-cm-form" id="subForm" action="https://www.createsend.com/t/subscribeerror?description=" method="post" data-id="YOUR-DATA-ID">
<div class="cpuSelect" style="display:inline-block;width:250px;">
<input style="width:100%;" placeholder="example@domain.com" autocomplete="Email" aria-label="Email" class="js-cm-email-input qa-input-email" id="fieldEmail" maxlength="200" name="YOUR-LIST-NAME" required="" type="email">
</div>
<button
style="display:inline-block; margin: 0 1rem;background:none;border:none;"
class="btn submit continue"
type="submit">{ SUBSCRIBE ) ]</button>
</form>
</div>
function validateEmail(email) {
var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
return re.test(email);
}
function submitEmail(e){
e.preventDefault();
var url = $('.newsletter-signup form.js-cm-form').attr("action"),
data = $('.newsletter-signup form.js-cm-form').serialize();
fetch( url, {
method: "POST",
body: JSON.stringify(data)
})
.then(result => { console.log("Completed with result:", result); })
.catch(err => { console.error(err); });
}
document.querySelector('.newsletter-signup .submit').addEventListener("click", function(e) { submitEmail(e) });
$(".newsletter-signup .qa-input-email").on("input", function(e) {
if (validateEmail($(this).val())){
$(".newsletter-signup button[type='submit']").removeClass("disabled");
} else {
$(".newsletter-signup button[type='submit']").addClass("disabled");
}
});