2013-10-12 51 views
2

大家好,提前致谢!提交表单并重写url后出现错误提示

我在创建的网站上需要一些帮助。

本地一切都很好。

所以我在一个页面(contact.php)(和一个email-action.php;进程)中获得了表单。

重写url(简单的html到简单的php)后,回复文本说:“我会尽快重播”,提交表单后不再工作。 我得到的邮件,但用户无法看到“回声”,所以他们不知道如果表格已正确完成,如果电子邮件发送..

所以我想有一些事情要去因为url重写,因为在本地所有文件都在工作,当所有文件最后都得到.php。

简历:电子邮件正确发送,但回波显示不出来..

编辑:

这里是我的htaccess

http://pastebin.com/J00GcwYd

这里的(开始)代码为:

<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', '[email protected]'); 

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

我们需要代码才能有机会看到最新的错误。 –

+0

我编辑过的第一篇文章,你能帮忙吗?代码正在工作..但回声没有显示因为url重写的因为:( – Gosax

回答

1

我们解决了这个问题,这个问题是很容易与萤火虫被发现在Gosax将URL发送给页面之后。问题是jQuery部分$('#alert').find('.message')(response);中的这一行代码。这很明显,我应该马上发现它。 jQuery的find()函数返回一个可以调用该对象的另一个函数的jQuery对象,但它不是一个函数,就像它使用的那样。解决办法是:

$('#alert').find('.message').html(response); 

下面是我对这个问题的原始答案。嗯,这很难破解你发布的内容,让我给你一个完整的解决方案,可以帮助你。如果您怀疑URL重写是您的问题,请发布完整的.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("[email protected]", "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开发工具更喜欢它(可能只是因为我使用了这么多年)。

+0

http://pastebin.com/J00GcwYd:我的htaccess 感谢您的帮助! – Gosax

+0

我看不到任何应该阻止你的jQuery从接收的答案你可以发送我的网址到你的网页,我会尽力为你调试 – Fleshgrinder

+0

非常感谢,我怎样才能发送你私人的URL?我新的在stackoverflow;( – Gosax