单页HTML5设计中的Ajax联系表单无效

时间:2016-08-09 12:10:29

标签: php html5 contact-form ajaxform

我购买了一个网页模板,但没有购买后支持。这是一个单页的HTML5设计。菜单按钮链接到index.html(page_ABOUT,page_SERVICES等)中的页面锚点。该网站的设计使得链接的页面锚点可以在静态z索引图像之间平滑滑动到位。模板CAN BE SEEN HERE的工作演示。

我的问题涉及about_CONTACTS页面锚点。我在其他网站上有其他联系页面运行良好,但这些是PHP页面(即contact.php)。为了保持在这个设计的范围内,我需要能够在单个HTML页面中创建about_CONTACTS页面功能。 (选择创建单独的PHP联系页面会破坏设计的幻灯片功能并导致页面重新加载。)about_CONTACTS页面表单的代码块是:

<form id="ajax-contact-form" action="javascript:alert('success!');">
<div class="clear"></div>
<label>Your full name:</label>
<INPUT class="textbox left " type="text" name="name" value="">
<div class="clear"></div>
<label >E-Mail:</label>
<INPUT class="textbox left" type="text" name="email" value="">
<div class="clear"></div>
<label >Phone Number:</label>
<INPUT class="textbox left" type="text" name="phone" value="">
<div class="clear"></div>
<label >Message:</label>
<TEXTAREA class="textbox left" NAME="content" ROWS="5" COLS="25"></TEXTAREA>
<div class="clear"></div>
<label>Captcha:</label>
<img src="captcha/captcha.php" style="margin:3px 0px; width:100px; height:32px; float:left;">
<INPUT class="textbox" type="text" name="capthca" value="" style=" width:90px; float:left; margin-left:10px; margin-top:2px">
<div class="clear"></div>
<INPUT class="pin" type="submit" name="submit" value="submit">
</form>

head标签之间的JavaScript是:

<script type="text/javascript">                                     
$(document).ready(function()
{ 
  $("#ajax-contact-form").submit(function() { 
    var str = $(this).serialize();      
    $.ajax({ 
      type: "POST", 
      url: "contact.php", 
      data: str, 
      success: function(msg)
      { 
        if(msg == 'OK') // Message Sent? Show the 'Thank You' message and hide the form
        { 
          result = '<div class="notification_ok">Your message has been sent. Thank you!<br> <a href="#" onclick="freset();return false;">send another mail</a></div>'; $("#fields").hide(); 
        }
        else { 
          result = msg; 
        } 
        $("#note").html(result); 
      } 
    }); 
    return false; 
   }); 
});

function freset()
{   
  $("#note").html('');  
  document.getElementById('ajax-contact-form').reset();
  $("#fields").show();
}

</script>

表单需要contact.php,其内容为CAN BE SEEN HERE。 Contact.php要求包含contact_config.php(文件CAN BE SEEN HERE的内容)和functions.php(内容CAN BE SEEN HERE)。

我将预期的发送/接收电子邮件地址放在contact_config.php中:

<?php
// To
define("WEBMASTER_EMAIL", 'email@companyname.com');
?>

如此:

<?php
// To
define("WEBMASTER_EMAIL", 'me@mydomain.com');
?> 

请问您为什么提交按钮不响应点击以及为什么没有发送邮件?我以前从未使用过这种类型的表单,虽然我确定我想编辑其他内容,但我不知道编辑的内容和位置。 (我已经非常谨慎地确保验证码输入正确。我既没有收到错误消息也没有收到成功消息。当试图通过联系表单提交消息时,根本没有回复。)

1 个答案:

答案 0 :(得分:0)

根据评论,解决方案如下:

a)从

更改您的表单标签
<form id="ajax-contact-form" action="javascript:alert('success!');">

<form id="ajax-contact-form" action="contact.php" method="post">

您的版本无效 - 操作应指定表单将数据发送到的位置,并且该方法是强制回发所必需的(否则它默认使用GET,您的PHP未设置为处理(您正在阅读$_POST个变量。

b)检查$_SESSION['captcha_keystring']$_POST["capthca"]的值,以确保它们确实包含您认为他们所做的事情。 e.g

e.g。 (仅用于调试目的 - 不要将其留待生产使用!):

$error .= "Captcha keystring: ".strtolower($_SESSION['captcha_keystring']);
$error .= " User-entered captcha: ".strtolower($_POST['capthca']);

if(isset($_SESSION['captcha_keystring']) && strtolower($_SESSION['captcha_keystring']) != strtolower($_POST['capthca']))
{
  $error .= "Incorect captcha.<br />";
}

还要确保您的HTML验证码文本框具有与您的PHP name="capthca"匹配的正确名称属性($_POST["capthca"])。