0
送信成功メッセージが新しいページに表示されています。同じページで送信した後に成功メッセージを取得する方法 - 新しいページではない
送信ボタンと同じページに表示するにはどうすればよいですか?ボタンを提出するために
contact.php
<?php
// configure
$from = 'email';
$sendTo = 'email';
$subject = 'new message';
$fields = array('uname' => 'Jmeno', 'surname' => 'Spolecnost', 'phone' => 'Telefon', 'uemail' => 'Email', 'message' => 'Obsah zpravy'); // array variable name => Text to appear in email
$okMessage = 'success';
$errorMessage = 'error';
// let's do the sending
try
{
$emailText = "Mate novou zpravu z web formulare: example.cz\n=============================\n";
foreach ($_POST as $key => $value) {
if (isset($fields[$key])) {
$emailText .= "$fields[$key]: $value\n";
}
}
mail($sendTo, $subject, $emailText, "From: " . $from);
$responseArray = array('type' => 'success', 'message' => $okMessage);
}
catch (\Exception $e)
{
$responseArray = array('type' => 'danger', 'message' => $errorMessage);
}
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$encoded = json_encode($responseArray);
header('location: contact.php?success=1');
echo $encoded;
}
else {
echo $responseArray['message'];
}
?>
JS:
問題になる可能性が2ヶ所あり$(".open4").click(function() {
$('#basicform').validator();
$('#basicform').on('submit', function (e) {
if (!e.isDefaultPrevented()) {
var url = "contact.php";
$.ajax({
type: "POST",
url: url,
data: $(this).serialize(),
success: function (data)
{
var messageAlert = 'alert-' + data.type;
var messageText = data.message;
var alertBox = '<div class="alert ' + messageAlert + ' alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>' + messageText + '</div>';
if (messageAlert && messageText) {
$('#basicform').find('.messages').html(alertBox);
$('#basicform')[0].reset();
}
}
});
return false;
}
})
試してみると動作しません。それは同じで、新しいページにリダイレクトします。contact.php – YakaMan
フォームのデフォルトの動作を無効にしていないことに気付かなかった。更新された回答を確認してください。 – krlv