Form not sending message

43 views Asked by At

I use heroku CORS anywhere proxy to solve CORS Access-Control-Allow-Origin in my form.

Now, my form showing message not send every time i tried to send a message. How can i solve this issue?

My form: Demo

Scripts:

const blogId="xxxxxxxxxxxxx";

var contactForm = document.querySelectorAll(".contact-form-blogger");

function an(req) {
    try {
        return JSON.parse(req)
    } catch (req) {
        return false
    }
}

for (i = 0; i < contactForm.length; i++) {
    var a = contactForm[i];
    a.addEventListener("submit", function (submitUrl) {
        submitUrl.preventDefault();
        var form = submitUrl.target;
        var req = new FormData(form),
            cH = "blogID=" + typeof blogId !== "undefined" ? blogId : "";
        req.forEach(function (cL, cK) {
            cH += "&" + encodeURIComponent(cK) + "=" + encodeURIComponent(cL)
        });
        submitUrl = "https://cors-anywhere.herokuapp.com/https://www.blogger.com/contact-form.do";
        req = new XMLHttpRequest;
        req.open("post", submitUrl, true);
        req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        req.send(cH);
        req.onreadystatechange = function () {
            var cK;
            if (this.readyState === 4) {
                if (this.status === 200) {
                    if (this.response != "") {
                        cK = an(this.responseText.trim());
                        if (cK.details.emailSentStatus == "true") {
                            form.reset();
                            var formSend = form.querySelector(".send-success");
                            if (formSend) {
                                formSend.style.display = "block";
                            }
                        } else {
                            var notSend = form.querySelector(".send-error");
                            if (notSend) {
                                notSend.style.display = "block";
                            }
                        }
                    }
                }
            }
        }
    })
}
1

There are 1 answers

0
Zac Anger On

You're using the demo server as your proxy, which is rate-limited and not open. See this announcement for details. You need to deploy it yourself and change the URL prefix to point to your version. The documentation, such as it is, can be found at the bottom of the README. Advanced options are here. You're also posting to Blogger, which doesn't accept a POST at that path (returns a 405, method not allowed).