如何在向同一个html页面添加文本的同时运行php脚本?

时间:2013-11-26 04:06:14

标签: php html

所以基本上,我想让某人填写一个表单,运行一个php脚本,而不是拉起php文件的网页,我想在表单的末尾添加文本。

目前,我有一个表格:

<form action="scripts/email.php" method="POST">
<p>Name: <input type="text" name="name" placeholder="Name"></p>
<p>Email: <input type="text" name="email" placeholder="Email"></p>
<p>Subject: <input type="text" name="subject" placeholder="Subject"></p>
<p>Message: </p>
<p><textarea name="message"></textarea></p>

看起来像这样:

点击“提交”后,会显示我的PHP脚本:

<?php

$from = $_POST['email'];
$to = "comp@c0mp.org";
$subject = $_POST['subject'];
$name = $_POST['name'];
$message = $_POST['message'];

mail($to, $subject, "Name: " . $name . "\nMessage: " . $message, "From:" . $from);

print "Your message has been sent!";

?>

这会导致一个空白的网页,只是用纯文本说明:

“您的邮件已发送!”

基本上,我想要的是在脚本运行后添加到提交表单中的文本,例如:

http://i.stack.imgur.com/zha4d.png

如何在网页上运行PHP脚本,而不是加载PHP脚本路径的新网页,而是在当前HTML网页上附加文字?

2 个答案:

答案 0 :(得分:1)

尝试这个:将此代码写入单页。

<form action="<?php $PHP_SELF ;?>" method="POST">
        <p>Name: <input type="text" name="name" placeholder="Name"></p>
        <p>Email: <input type="text" name="email" placeholder="Email"></p>
        <p>Subject: <input type="text" name="subject" placeholder="Subject"></p>
        <p>Message: </p>
        <p><textarea name="message"></textarea></p>
        <input type="submit" name="submit" value="Submit">
        </form>
        <?php
        if (isset($_POST['submit'] ))
        {
          $from = $_POST['email'];
          $to = "comp@c0mp.org";
          $subject = $_POST['subject'];
          $name = $_POST['name'];
         $message = $_POST['message'];

 mail($to, $subject, "Name: " . $name . "\nMessage: " . $message, "From:" . $from);

         echo "Your message has been sent";
        }
        ?>

答案 1 :(得分:1)

您可以使用ajax来实现更安全,更快速的脚本执行。

HTML code:

<form method="POST">
        <p>Name: <input type="text" id="name" name="name" placeholder="Name"></p>
        <p>Email: <input type="text" id="email" name="email" placeholder="Email"></p>
        <p>Subject: <input type="text" id="subject" name="subject" placeholder="Subject"></p>
        <p>Message: </p>
        <p><textarea id="area" name="message"></textarea></p>
        <input type="submit" name="submit" value="Submit" onclick="mail_js();">
</form>
<div id="success_msg" style="display:none;"></div>

为这个div提供合适的风格。

JS代码:

function mail_js()
{

    var input_val=$('#name').val();
    var email_val=$('#email').val();
    var subject_val=$('#subject').val();
    var message_val=$('#area').val();

    jQuery.ajax({
            type: 'post',
            data:{
                'input_val':input_val,
                'email_val':email_val,
                'subject_val':subject_val,
                'message_val':message_val
            },
            url: 'email.php',

            success:function(response){

                $("#success_msg").append(response).show();
            },
            error: function(errorThrown){
                alert('error');
                console.log(errorThrown);
            }
        });
}

PHP脚本:

$from = $_POST['email_val'];
$to = "comp@c0mp.org";
$subject = $_POST['subject_val'];
$name = $_POST['input_val'];
$message = $_POST['message_val'];

mail($to, $subject, "Name: " . $name . "\nMessage: " . $message, "From:" . $from);

echo "Your message has been sent";