大家好,并提前致谢!
我在创建的网站上需要一些帮助。
Localhost中的一切都很好。
所以我在页面中得到了表单(contact.php)(以及一个email-action.php;用于该过程)。
在重写url(简单的html到简单的php)之后,回应文字说:“我将重播asap”,在我提交表单后不再工作了。 我收到邮件,但是用户看不到“回音”,因此他们不知道表格是否已正确完成以及邮件是否已发送..
所以我想因为url重写会有一些事情发生,因为在本地所有文件都在最后得到.php的时候工作了。
恢复:电子邮件已正确发送,但回显未显示..
编辑:
这是我的htaccess
以下是表单的代码(
)<form onSubmit="return submitForm();" action="" method="post" class="form-a" name="homefrm1" id="homefrm1">
<input type="hidden" name="event" value="start" />
电子邮件操作的代码:
<?php //ob_start();
if(isset($_REQUEST['event']) && $_REQUEST['event']!=''){$event=$_REQUEST['event'];}else{$event='';}
define('SITE_EMAIL', 'myemail@mail.com');
if(isset($_POST['copyemail_check'])) { $adddata = '<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td height="22" colspan="2" align="center">Une copie de cet e-mail a été envoyé.O</td></tr></table>';} else { $adddata="";}
/* recipients */
$to1= SITE_EMAIL;
/* subject */
$subject1 = "Contact ";
/* message */
$message1 = '<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="33%"><font color="#f35D14" size="2" face="Tahoma">Nom :</font></td>
<td width="67%" height="22"><font color="#333333" size="-1" face="Tahoma">'.$_POST['name'].'</font></td>
</tr>
<tr>
<td width="33%"><font color="#f35D14" size="2" face="Tahoma">E-mail :</font></td>
<td width="67%" height="22"><font color="#333333" size="-1" face="Tahoma">'.$_POST['email'].'</font></td>
</tr>
<tr>
<td width="33%"><font color="#f35D14" size="2" face="Tahoma">Message :</font></td>
<td width="67%" height="22"><font color="#333333" size="-1" face="Tahoma">'.$_POST['msg'].'</font></td>
</tr>
</table>';
/* To send HTML mail, you can set the Content-type header. */
$headers1 = "MIME-Version: 1.0\r\n";
$headers1 .= "Content-type: text/html; charset=iso-8859-1\r\n";
/* additional headers */
$headers1 .= "From: ".$_POST['name']." <".$_POST['email'].">\r\n";
/* and now mail it */
if(isset($_POST['copyemail_check'])) {
$to2 = $_POST['email'];
mail($to2, $subject1, $message1, $headers1);
$message1 = $message1.$adddata;
}
mail($to1, $subject1, $message1, $headers1);
echo "<div class='alert alert-email-success'>Merci, nous avons bien reçu votre message et nous vous répondrons dans les meilleurs délais.</div>";
?>
联系页面的代码末尾:
<script type="text/javascript">
function submitForm() {
$.ajax({type:'POST', url:'email-action.php', data:$('#homefrm1').serialize(), success: function(response) {
$('#alert').find('.message')(response);
}});
return false;
}
</script>
答案 0 :(得分:1)
我们解决了这个问题,在Gosax将URL发送到页面后,Firebug很容易发现问题。问题是jQuery部分$('#alert').find('.message')(response);
中的这行代码。这很明显,我应该马上发现它。 jQuery的find()
函数返回一个jQuery对象,在该对象上可以调用该对象的另一个函数,但它不是一个函数,就像它使用的那样。解决方案是:
$('#alert').find('.message').html(response);
以下是我(原始)问题的原始答案。
嗯,这很难从您发布的内容中解读,让我给您一个可以帮助您的完整解决方案。如果您怀疑网址重写是您的问题,请发布完整的.htaccess
,我也可以帮助您。
包含表单的页面如下所示:
<!doctype html>
<html dir="ltr" lang="fr">
<head>
<!-- HTML head stuff -->
</head>
<body>
<!-- HTML -->
<form id="contact" action="/contact.php" method="post">
<p><label for="from">Your email address</label><input id="from" name="from" type="email"></p>
<p><label for="body">Message</label><textarea id="body" name="body"></textarea></p>
<p><input type="submit"></p>
</form>
<!-- HTML -->
<script>
// You already have jQuery as I've seen.
$(function () {
var $contact = $('#contact');
$contact.submit(function (e) {
e.preventDefault();
$.when($contact.fadeOut(), $.post('/email.php', { from: $('#from').val(), body: $('#body').val() }, function (response) {
$contact.html(response);
})).done(function () {
$contact.fadeIn();
});
});
});
</script>
</body>
</html>
您的PHP脚本:
<?php
$from = filter_input(INPUT_POST, "from", FILTER_VALIDATE_EMAIL, FILTER_REQUIRE_SCALAR);
$body = filter_input(INPUT_POST, "body", FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_REQUIRE_SCALAR);
if ($from !== false && $body !== false) {
mail("foo@bar", "new contact", $body, implode("\r\n", array(
"MIME-Version: 1.0",
"Content-type: text/html; charset=iso-8859-1",
"FROM: {$from}",
)));
echo "<div class='alert alert-email-success'>Merci, nous avons bien reçu votre message et nous vous répondrons dans les meilleurs délais.</div>";
}
else {
echo "<div class='alert alert-email-error'>Email address and/or message is invalid or empty.</div>";
}
?>
这是您尝试做的更简单,更安全的方式。但请发布您的.htaccess
。
还可以考虑使用浏览器的开发控制台(通常是 F12 键)并在按下提交按钮时检查控制台,您应该能够调试那里发生的事情。我还可以为Firefox推荐Firebug,我比Firefox开发工具更喜欢它(也许只是因为我使用它已经很多年了)。