2013-07-21 61 views
0

我想在提交联系表单后追加一些项目。不幸的是,我不知道如何告诉它要附加项目的文件。这是完整的代码。有人能够帮助吗?在表单上添加提交

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

$mail_to = '[email protected]'; 
$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 
} 
?> 
+1

我解决不了你的问题,但它远远更好地使用服务器端验证/检查,而不是使用Javascript。 Javascript可以被禁用。 –

+0

@Fred谢谢。我会看看,而不是:) –

+0

“我不知道如何告诉它什么文件附加项目。”这没有什么意义。它只能附加到代码运行的文档上。 – j08691

回答

0

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

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

为什么'.after()'比'.append()'更好? – j08691

+0

他正在尝试添加Submit按钮中的段落,这是不可能的。所以我用了之后提交按钮放置了这个段落之后。 append可以用于包含元素的div,span,p等元素。 –

+1

你怎么知道'#submit'是他没有列出他的HTML时的按钮? – j08691

0

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

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

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

E.g.

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 } 
+0

混合为什么不起作用? – j08691

+0

您构建代码的方式,表单已提交以便发送邮件。有条件的结果是你发出的只是一个小的脚本,它会在提交后向表单添加一条消息。它已经被提交 - 这就是为什么你的代码正在运行。提交发生后,您无法将更多HTML发送到页面。无论是从新页面开始,还是使用AJAX调用来发送数据并对响应做出反应而无需重新加载。 – 2013-07-21 03:50:51

+0

你怎么知道他没有回到同一页面? – j08691