更新两次:在进行一些测试后,我发现在页面中加载jQuery时,不工作正常。我的页面依赖于jQuery,所以我该怎么办?
更新:您可以在此处查看有问题的页面here和工作测试页here。
我正在制作联系表单,看起来像这样
<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="../sendemail.php">
<div class="row-fluid">
<div class="span5">
<label>First Name</label>
<input name="first" type="text" class="input-block-level" required="required" placeholder="Your First Name">
<label>Last Name</label>
<input name="last" type="text" class="input-block-level" required="required" placeholder="Your Last Name">
<label>Email Address</label>
<input name="email" type="text" class="input-block-level" required="required" placeholder="Your email address">
</div>
<div class="span7">
<label>Message</label>
<textarea name="message" id="message" required class="input-block-level" rows="8"></textarea>
</div>
</div>
<button type="submit" class="btn btn-primary btn-large pull-right">Send Message</button>
<p> </p>
</form>
没什么太花哨的。 sendemail.php看起来像这样
<?php
header('Content-type: application/json');
$status = array(
'type'=>'success',
'message'=>'Email sent!'
);
$name = @trim(stripslashes($_POST['first']." ".$_POST['last']));
$email = @trim(stripslashes($_POST['email']));
$subject = "Monarc - Message From ".$name;
$message = @trim(stripslashes($_POST['message']));
$email_from = $email;
$email_to = 'xxx@xxx.xxx';
$body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;
$success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
echo json_encode($status);
die;
电子邮件通过,但邮件中没有邮件发送。它说(未知发件人)作为发件人,身体看起来像这样:
名称:
电子邮件:
主题:Monarc - 消息来自
消息:
我做错了什么?
谢谢!
答案 0 :(得分:0)
要发布表单值,您必须使用输入类型提交而不是按钮类型
变化:
<button type="submit" class="btn btn-primary btn-large pull-right">Send Message</button>
为:
<input type="submit" class="btn btn-primary btn-large pull-right" value="Send Message">
答案 1 :(得分:0)
补充信息,此表单使用以下javascript文件:
jQuery(function($){
// Ajax contact var form = $(&#39; .contact-form&#39;); form.submit(功能 (){$ this = $(this); $。员额($(本).attr(&#39;动作&#39;), function(data){ 。$ this.prev()文本(data.message).fadeIn()延迟(3000).fadeOut()。 },&#39; JSON&#39);返回false; });
//转到热门$(&#39; .gototop&#39;)。点击(功能(事件){
event.preventDefault(); $(&#39; html,body&#39;)。animate({ scrollTop:$(&#34; body&#34;)。offset()。top},500); }); //结束转到顶部});
在另一个论坛上搜索我发现了如何解决此问题。您只需要在php文件中添加以下代码:
$headers = "From: mail <$email_from>\r\n";
$headers .= "MIME-Version: 1.0" ."\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
并删除&#34; @&#34; $ success = @mail($ email_to,$ subject,$ body,&#39; From:&lt;&#39;。$ email_from。&#39;&gt;&#39;);
在&#34; main.js&#34;提交您的代码并不提供.post()方法中的任何数据。你需要添加$(this).serialize()来获取所有表单字段/值。
未经测试但应该有效 -
$ .post($(this).attr(&#39; action&#39;),$(this).serialize(),function(data){
希望有助于解决问题