0

朋友们,这似乎应该很容易,但我正在画一个空白。我想通过电子邮件向人们发送链接。他们应该输入他们的电子邮件地址,点击“提交”,然后将电子邮件显示在他们的收件箱中。PHP 必须是外部文件。所以在我的页面上...

<form action="http://www.myotherdomain.com/email.php" method="post">Email: 
    <input type="text" name="email" />
    <input type="submit" />
</form>

在我的 php 文件中,我有...

<?php
    $to = $_POST["email"];
    $subject = "Test mail";
    $message = "Hello! This is a simple email message.";
    $from = "address@someisp.com";
    $headers = "From:" . $from;
    mail($to,$subject,$message,$headers);
?> 

它工作正常并发送电子邮件,但在我点击提交按钮后它会将我带到 email.php 页面。我不想离开我所在的页面。我只想点击按钮并在不离开页面的情况下发送电子邮件。奖金将是在发送电子邮件时显示的消息。

谢谢!

4

4 回答 4

0

您需要使用 Jquery/Ajax 来执行此操作。这是一个简单的脚本,它应该适用于您当前调用 email.php 的页面:

<script src="http://code.jquery.com/jquery-1.7.min.js"></script>

在身体里:

<script type="text/javascript" >
function process(email){
$.post("email.php",{email:email},function(result){
alert(result); 
});

};
</script>

<img src="whatever.png" onClick="process('their_email@example.com');">
于 2012-08-16T18:03:22.257 回答
0

如果您想在不加载页面的情况下执行此操作,则需要使用 AJAX。如果您对导致页面加载的表单提交感到满意,那么您有两个选择。要么将电子邮件逻辑放入当前页面并将页面发布回自身,要么执行从 mail.php 脚本重定向回用户来自的页面。

于 2012-08-16T17:56:37.393 回答
0

你有 2 个选项要么使用 AJAX(jQuery 将是一个快速的解决方案)

$('form').submit(function(){
    $.ajax({
        type: 'POST',
        url: 'http://www.myotherdomain.com/email.php',
        data: $(this).serialize(),
        success: function(data) {
            alert('Message sent!');
        }
    });
    return false;
});

或在邮件完成后进行重定向:

header('Location: http://www.yourdomain.com');
exit;
于 2012-08-16T18:02:12.883 回答
0

您可以添加目标和 iframe:

<form action="http://www.myotherdomain.com/email.php" target="aframe" method="post">Email: 
    <input type="text" name="email" />
    <input type="submit" />
</form>

<iframe src="about:blank" style="display:none" name="aframe" id="aframe"></iframe>

不需要 ajax,这也适用于没有 javascript 的用户,但是“已发送电子邮件”的消息会有所帮助。您可以从 email.php 中回显警报:

echo "<script type='text/javascript'>alert(\"Email sent\");</script>";

如何做到这一点的真正简单的例子。

于 2012-08-16T17:59:37.540 回答