【问题标题】:Append on form submit附加在表单提交上
【发布时间】:2013-07-20 01:53:57
【问题描述】:

我正在尝试在提交联系表单后附加一些项目。不幸的是,我不知道如何告诉它要将项目附加到哪个文档。这是完整的代码。有人能帮忙吗?

<?php
$field_name = $_POST['name'];
$field_email = $_POST['email'];
$field_message = $_POST['message'];

$mail_to = 'contact@jeremyblaze.com';
$subject = 'Support Request';

$body_message = 'From: '.$field_name."\n";
$body_message .= 'Email: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
    <script type="text/javascript">
        $(document).ready(function() {
            $("#submit").append("<p class='success'>Thanks! Your email has been sent.</p>");
        });
    </script>
<?php
}
else { ?>
    <script type="text/javascript">
        $(document).ready(function() {
            $("#submit").append("<p class='error'>Sorry, something has gone wrong.</p>");
        });
    </script>
<?php
}
?>

【问题讨论】:

  • 我无法解决您的问题,但是最好使用服务器端验证/检查而不是 Javascript。 Javascript 可以被禁用。
  • @Fred 谢谢。我会看看那个:)
  • “我不知道如何告诉它要将项目附加到哪个文档。”这没有多大意义。它只能将其附加到代码运行的文档中。
  • @JeremyBlazé 不客气。
  • 您是否将表单发布到同一页面?还是这上面是一个完全独立的页面?

标签: php jquery forms email


【解决方案1】:

工作演示http://jsfiddle.net/NYac5/

 $(document).ready(function () {
     $("#submit").after("<p class='error'>Sorry, something has gone wrong.</p>");
 });

【讨论】:

  • 为什么.after().append() 更好?
  • 他试图在提交按钮中附加段落,这是不可能的。所以我使用了之后,这意味着在提交按钮之后放置这个段落。 append 可以与 div,span,p 等可以包含元素的元素一起使用。
  • #submit 没有列出他的 HTML,你怎么知道他是一个按钮?
  • 我正要说同样的话。也许他称他的表格为#submit
  • 我只是按照命名约定..!!
【解决方案2】:

这部分代码混合了 PHP、HTML 和 Javascript - 它不会像这样工作。

if ($mail_status) { ?>
  <script type="text/javascript">
  .
  .
  .
  </script>
<?php

你需要做两件事之一。要么发出带有邮件状态的新文档,要么将响应发送回 Ajax 调用(如果你已经这样做了)

例如

if ($mailStatus) {
?>
<!doctype html><html><head></head><body>
  <p class='success'>Thanks! Your email has been sent.</p>
</body></html>
<?php } else {  ?>
<!doctype html><html><head></head><body>
  <p class='failure'>Sorry! Your mail couldn't be sent</p>
</body></html>
<?php }

...或...

if ($mailStatus) {
  header("Content-type: application/json");
  echo '{"errcode":"0","errmsg":"Success - your message was sent"}'
} else {  
  header("Content-type: application/json");
  echo '{"errcode":"99","errmsg":"Sorry - your message couldn't be sent."}'
<?php }

【讨论】:

  • 按照您构建代码的方式,已提交表单以便发送邮件。取决于您发出的结果只是一个小脚本,该脚本将在提交后将一条消息附加到表单中。它已经提交 - 这就是您的代码正在运行的原因。提交发生后,您无法向页面发出更多 HTML。要么从新页面开始,要么使用 AJAX 调用来发送数据并对响应做出反应而无需重新加载。
  • 你怎么知道他没有回同一个页面?
  • 他的 sn-p 被描述为“完整代码”那里没有 HTML 表单。即使他发布到同一个文档,也不需要 jQuery 编写消息。
猜你喜欢
  • 2016-04-29
  • 1970-01-01
  • 2020-05-20
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 2013-03-03
相关资源
最近更新 更多