私が持っているウェブサイトにフォームプラグインを実装しようとしています。非常に単純なはずですが、私が望むように動作することを拒否しています。
これは、div 内の単純な php メール フォームであり、正しく送信されると、同じ 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("myself@gmail.com", $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() 関数を使用してフォームを生成します。
助けてください..