Ajax Kontaktformular, Mails werden mehrfach verschickt
Malte
- javascript
0 Steel
Hallo,
ich habe aus einem Beispiel heraus ein Ajax Kontaktformular angewandt und es für meine Bedürfnisse angepasst. Einigen von Euch wird es auch sicherlich bekannt sein - mein Problem ist allerdings, dass die Anfrage die Mail ganze 6 mal verschickt… Kann ich in der Funktion "makePOSTRequest" die Anfrage stoppen, oder anhalten nachdem sie verschickt wurde?
Vielen Dank!
var http_request = false;
var canSend = true;
var emailString = "";
var keyString = "";
var reqField = "<img src='data/req_input.gif' alt='Require' style='vertical-align:top' />";
function makePOSTRequest(url, parameters) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
//alert('Cannot create XMLHTTP instance');
document.getElementById("serverOutputError").innerHTML = "<p>Es kann keine XMLHTTP Instanz erzeugt werden. Bitte versuche es noch einmal!</p>";
return false;
}
http_request.onreadystatechange = alertContents;
http_request.open('POST', url, true);
http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http_request.setRequestHeader("Content-length", parameters.length);
http_request.setRequestHeader("Connection", "close");
http_request.send(parameters);
document.getElementById('serverOutput').innerHTML = "<p>Einen Moment, " + document.getElementById("Name").value +".</p>";
}
function alertContents() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
//alert(http_request.responseText);
result = http_request.responseText;
document.getElementById('serverOutput').innerHTML = result;
} else {
//alert('There was a problem with the request.');
document.getElementById("serverOutputError").innerHTML = "<p>Es gibt ein Problem mit der Übertragung. Bitte versuche es noch einmal!</p>";
}
}
}
function get(obj) {
canSend = true;
emailString = encodeURI(document.getElementById("Email").value);
keyString = encodeURI(document.getElementById("Key").value);
// name
if (encodeURI(document.getElementById("Name").value) == "") {
document.getElementById('nameReq').innerHTML = reqField;
canSend = false;
} else {
document.getElementById('nameReq').innerHTML = "";
}
// email
if (emailString == "") {
document.getElementById('emailReq').innerHTML = reqField;
document.getElementById("serverOutputError").innerHTML = "";
canSend = false;
} else if (emailString.indexOf("@") == -1) {
document.getElementById("serverOutputError").innerHTML = "<p>Die Eingabe war nicht korrekt. Bitte gib eine gültige Email Adresse an!</p>";
canSend = false;
} else if (emailString.indexOf(".") == -1) {
document.getElementById("serverOutputError").innerHTML = "<p>Die Eingabe war nicht korrekt. Bitte gib eine gültige Email Adresse an!</p>";
canSend = false;
} else {
document.getElementById('emailReq').innerHTML = "";
document.getElementById("serverOutputError").innerHTML = "";
}
// nachricht
if (encodeURI(document.getElementById("Nachricht").value) == "") {
document.getElementById('messageReq').innerHTML = reqField;
canSend = false;
} else {
document.getElementById('messageReq').innerHTML = "";
}
// key
if (keyString == "") {
document.getElementById('keyReq').innerHTML = reqField;
canSend = false;
} else if (keyString.indexOf(captcha_key)) {
document.getElementById("serverOutputError").innerHTML = "<p>Die Eingabe war nicht korrekt. Bitte versuche es doch noch einmal.</p>";
document.getElementById("keyReq").innerHTML = reqField;
canSend = false;
} else {
document.getElementById("keyReq").innerHTML = "<img src='data/checkmark.gif' alt='Checkmark' />";
}
if (canSend == true) {
var poststr = "Name=" + encodeURI( document.getElementById("Name").value ) +
"&Email=" + encodeURI( document.getElementById("Email").value ) +
"&Betreff=" + encodeURI( document.getElementById("Betreff").value ) +
"&Nachricht=" + encodeURI( document.getElementById("Nachricht").value );
makePOSTRequest('scripts/mail.php', poststr);
}
}
function clearContact() {
// clear
document.getElementById("Name").value = "";
document.getElementById("Email").value = "";
document.getElementById("Betreff").value = "";
document.getElementById("Nachricht").value = "";
document.getElementById("Key").value = "";
document.getElementById("nameReq").innerHTML = "";
document.getElementById("emailReq").innerHTML = "";
document.getElementById("messageReq").innerHTML = "";
document.getElementById("keyReq").innerHTML = "";
document.getElementById("serverOutputError").innerHTML = "";
document.getElementById("serverOutput").innerHTML = "<input type='submit' class='formButton' value='SEND IT' onclick='javascript:get(this.parentNode);'/>";
}
Hi,
ich frag mich grad eher wie dein verarbeitendes Script aussieht. So spontan hab ich in der Masse Code nix gefunden das einen sechsmaligen Versand rechtfertigen wuerde. Oder verschickt dein Code unterschiedlich viele E-Mails und nicht immer 6?
Gruss