Я пытаюсь реализовать плагин формы для веб-сайта, который у меня есть. Он должен быть очень простым, но он отказывается вести себя так, как я хочу.Ajax не заполняет цель DIV правильно после отправки формы
Это простая форма электронной почты php внутри div, которая после правильной отправки заменяется сообщением об успешном завершении или сбое внутри этого же div. На данный момент мой JS просто добавляет сообщение поверх формы.
Я ошеломлен, потому что думал, что занялся серьезной проблемой для своего опыта, но я не могу пройти мимо этой простой ошибки. Все, что я хочу, это ответное сообщение внутри DIV, когда-то содержавшее форму.
Вот включают PHP:
if (isset($_REQUEST['sender']) && isset($_REQUEST['message'])) {//if "sender" and "message" is filled out, proceed
//check if the email address is invalid
$mailcheck = spamcheck($_REQUEST['sender']);
if ($mailcheck==FALSE) {
echo "An error has occurred" . $_REQUEST['sender'] . " " . $_REQUEST['message'];
}
else {//send email
$email = $_REQUEST['sender'] ;
$subject = "This is the subject" ;
$message = $_REQUEST['message'] ;
mail("[email protected]", $subject, $message, "From: $email");
echo "Your message was sent";
}
}
function createForm($formID, $formName) {
echo "<div id=\"" . $formID . "\" class=\"ajaxForm\" >" . PHP_EOL;
echo "<form name =\"" . $formName . "\" method=\"post\" onsubmit=\"ajaxUpdate(\"" . $formID . "\",\"sandbox.php\"," . sender . "," . message . ");>" . PHP_EOL;
echo "<input name=\"sender\" type=\"text\" placeholder=\"email\" required><br>" . PHP_EOL;
echo "<br>" . PHP_EOL;
echo "<textarea rows=\"6\" cols=\"40\" name=\"message\" placeholder=\"message\" required></textarea><br>" . PHP_EOL;
echo "<input type=\"submit\" value=\"Send\" >" . PHP_EOL;
echo "</form>" . PHP_EOL;
echo "</div>" . PHP_EOL;
}
function spamcheck($field) {
//filter_var() sanitizes the e-mail
//address using FILTER_SANITIZE_EMAIL
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
//filter_var() validates the e-mail
//address using FILTER_VALIDATE_EMAIL
if(filter_var($field, FILTER_VALIDATE_EMAIL)) {
return TRUE;
}
else {
return FALSE;
}
}
И в ajaxUpdate JS:
function ajaxUpdate(targetDIV, responsePHP, param1, param2) {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById(targetDIV).innerHTML = xmlhttp.responseText;
}
}
var strContent = responsePHP + "?sender=" + param1 + "&message=" + param2;
xmlhttp.open("POST", strContent, true);
xmlhttp.send();
}
я использую это, включая JS и PHP, и нерест форму, используя CreateForm ().
Пожалуйста некоторую помощь ..
В принципе, это случай отсутствия туалета. – wavvves
btw Я знаю, что эта функция js является большой ошибкой безопасности, она просто остается такой простой сейчас. – wavvves
Ваш вопрос немного запутанный. Какой 'div' вы имеете в виду и почему вы не можете его получить? – MahanGM