我在頁面上使用Formspree作爲一個字段的表單。爲了避免將我的用戶重定向到默認的感謝頁面,我嘗試使用ajax提交表單並顯示成功/錯誤消息。Formspree:Ajax提交不起作用
但是,我的代碼不起作用。據我所知,這些消息不會出現。我認爲這是與希望的消息我的按鈕中顯示,和我的按鈕是一個輸入字段..
這裏的fiddle,這裏是代碼:
HTML:
<div id="contactFormWrapper">
<form id="contact-form" action="http://formspree.io/[email protected]" method="POST">
<input type="message" name="name" value placeholder="Chanel Boy.." class="design--form">
<input id="send-button" type="submit" class="btn--main" style="width:auto" value="SUBMIT">
</form></div>
JS:
var contactForm = document.querySelector('#contact-form'),
inputName = contactForm.querySelector('[name="name"]'),
sendButton = contactForm.querySelector('#send-button');
sendButton.addEventListener('click', function(event){
event.preventDefault(); // prevent the form to do the post.
sendButton.innerHTML = 'Sending..';
var xhr = new XMLHttpRequest();
xhr.open('POST', '//formspree.io/[email protected]', true);
xhr.setRequestHeader("Accept", "application/json")
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
xhr.send(
"name=" + inputName.value;
xhr.onloadend = function (res) {
if (res.target.status === 200){
sendButton.innerHTML = 'Message sent!';
}
else {
sendButton.innerHTML = 'Error!';
}
}
});
謝謝!
語法問題太多。 元素缺失屬性值=「東西」。 xhr.onloadend應該在xhr.send之外。 –