【问题标题】:display echo msg within same div tag在同一个 div 标签内显示 echo msg
【发布时间】:2014-05-19 16:43:46
【问题描述】:

我正在制作将表单数据发送到数据库和邮件中的联系表单(两者都工作正常)但是在提交表单时,我想在 .mail_middle 类中显示感谢消息并隐藏表单。

现在我收到消息“感谢您的评论!”而不是同班的“谢谢你的报价请求”。

我希望显示和隐藏“感谢您提供报价请求”表单。

请帮助我进一步编写代码,因为我不知道现在该做什么.....

form.php

<form method='post'>
  Name: <input type='text' name='name' id='name' />
  Email: <input type='text' name='email' id='email' />
  <input type='submit' value='Submit' class='mailbtn' />
</form>

process_db.php

<?php

  [...]    
  mysql_query($query);    
  echo "Thank you for your Comment!";    
  mysql_close($con);      
  include("mail.php"); 
}

HTML

<div class="middle mail_middle">

<fieldset>
    <?php include("form.php"); ?>
    <?php include("process_db.php"); ?>                                         
</fieldset>

</div>

<script type="text/javascript">

            $('.mailbtn').live('click',function(){

            $.ajax({
            type: "POST",
            async : false,
            url: "mail.php",
            data: { name:name, email:email, phn:phn, budget:bgt, comment:txt, loc:loc}

            })
            .done(function( msg ) {
            $('.mail_middle').html('');
            $('.mail_middle').html('Thank you for quote request.');
            return false;
            });


    });
</script>

ma​​il.php

<?php

$to =  array("email-id1","email-id2");

$subject = "my_subject";
$message .= "<table border='1'>";
$message .= "<tr><td>Name    </td><td>".$_POST['name']."</td></tr>";
$message .= "<tr><td>Email   </td><td>".$_POST['email']."</td></tr>";
$message .= "</table>";

$from = "email-id";
$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=utf-8\r\n"; 
$headers .=  'from: '.$from .'' . "\r\n" .

            'Reply-To: '.$from.'' . "\r\n" .

            'X-Mailer: PHP/' . phpversion();
foreach($to as $row)
{
   mail($row,$subject,$message,$headers);
}

echo "Mail Sent.";
die;
?>

【问题讨论】:

  • 第一。为什么要使用直播功能?只需单击事件就会很有用。另外,您的 .mail_middle 类元素在哪里?为什么你会返回 done 回调?
  • 这些是我发现的,因为我是编码语言的新手。请帮助您的建议...
  • 同意@Cheluis,还取决于所使用的 jQuery 版本。如果它是最近的,.live() 根本不起作用。
  • 请贴出你使用的jQuery版本...
  • @user3423283 我知道您是编码语言的新手,但质疑您为什么要这样做将有助于您了解您想要实现的目标。此外,如果您是该语言的新手,您应该尝试其他一些方法来学习它。干杯。

标签: javascript php html database forms


【解决方案1】:

在您的 jQuery .done() 回调中,我不确定在此处返回 false 会产生什么影响,但据我所知,AJAX 方法很可能没有被调用。

如果您的按钮没有收到来自click 事件的错误响应,就会出现这种情况。

我建议将您的代码更改为此...

form.php

<form method='post' class="mailform">
     Name: <input type='text' name='name' id='name' />
     Email: <input type='text' name='email' id='email' />
     <input type='submit' value='Submit' class='mailbtn' />
</form>

process_db.php

<?php

  [...]    
  mysql_query($query);    
  echo "Thank you for your quote request.";    
  mysql_close($con);      
  include("mail.php"); 
  $myformsubmitted = true;
}

html.php

<div class="middle mail_middle">

    <fieldset>
        <?php include("process_db.php"); ?> 
        <?php if(!$myformsubmitted) include("form.php"); ?>                                        
    </fieldset>

</div>

<script type="text/javascript">

    // if js is supported submit by ajax...
    $('.mailform').live('submit', function(event){

        event.preventDefault();

        $.ajax({
            type: "POST",
            async : false,
            url: "process_db.php",
            data: { 
                name:name, 
                email:email, 
                phn:phn, 
                budget:bgt, 
                comment:txt, 
                loc:loc
            }
        })
        .done(function( msg ) {
            $('.mail_middle').html('Thank you for quote request.');
        });


    });
</script>

【讨论】:

  • 将你的process_db.php echo 行改为echo "Thank you for your quote request!";
  • 我提供的代码修复了您的 AJAX 请求,但很明显“谢谢您的评论!”响应来自...
  • 我已经这样做了,但是当显示 msg 时表单并没有自动隐藏....
  • 好吧,再看一遍,您的 AJAX 代码将永远不会添加数据库条目和发送电子邮件。您的数据库条目代码不包含在您尝试 AJAX 的 mail.php 中。您需要根据我更新的答案调整您的代码..
  • 如果您打算使用 Ajax 处理请求,请不要使用表单。它之所以隐藏是因为表单正在处理它。不要使用表单,也不要使用提交。使用按钮。
猜你喜欢
  • 1970-01-01
  • 2017-07-03
  • 2021-11-22
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
相关资源
最近更新 更多