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);'/>";
}