2012-03-17 40 views
2

我刚刚开始使用PHP,并且有一个相当简单的问题,我似乎无法弄清楚。我已经设置了一个基本的PHP脚本,将从我的网站联系页面发送给我内容。脚本本身很好 - 验证器也是如此。现在我想实现的是获得一个简单的弹出窗口(类似于javascript中的提醒函数)。这里是我的尝试:“消息发送”使用PHP和JS确认弹出窗口

if ($valid) { 
     //*isUTF8($subject); 
     //*isUTF8($formcontent); 
     sendMail(); 
     $body = $successMarkup . $backMarkup; 
     $title = "Form sent"; 
     @header("location:formsent.php"); 
    } else { 
     $body = $errorMarkup . $errorMarkupEnd . $backMarkup; 
     $title = "Form errors"; 
    } 

文件formsent.php我指的这里只包含基本的HTML标记,以及它只要你打开网页执行的JavaScript警告:

<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Contact Success</title> 
</head> 

<body> 
<script language="Javascript"> 
<!-- 
alert ("Thank you for your message! I will come back to you as soon as possible!") 
//--> 
</script> 
</body> 
</html> 

在这里我的问题: 当我通过发送按钮发送填写的联系表后,我得到一个弹出窗口显示上面显示的消息 - 但这样做,它离开了我的实际页面,并显示我只有一个白色的屏幕。

如何在不离开页面的情况下实现该弹出消息?

+0

我在formsent.php上显示警报后打开了一个新页面吗?尝试添加(退出)[http://php.net/manual/en/function.exit.php]直接调用@header(“location:formsent.php”);以防止进一步的PHP执行。 – 2012-03-18 11:36:56

回答

1

尝试使用这一个:http://jquery.malsup.com/form/与jQuery使Ajax表单提交简单。 该页面上显示的示例足以实现您的故事类型。 只是把:

<script> 
$(document).ready(function(){ 
    $('form#form_id').ajaxForm(
    function(data){ 
     alert(data); 
    } 
    ) 
}) 
</script> 

所以你需要在你的sendmail脚本所做的一切都是为了呼应所需的信息,无需重新定向。

+0

谢谢!现在试试吧... – Severin 2012-03-17 14:09:08

0

header(“Location:< url>”)会导致正确的重定向。您需要在这里使用Ajax发送数据(当用户提交时),接收弹出框的内容然后显示它。

+0

没有任何方法可以在不使用ajax的情况下执行此操作吗? – Severin 2012-03-17 13:50:13

+0

好吧...而不是重定向到一个不同的页面,使用会话变量来存储当前的弹出消息,并重新加载相同的页面。现在你有任何你需要做出正确的弹出框。您现在可以将其与页面的其余部分完全整合。 – 2012-03-17 13:54:27