0

在我的网站中,我有一个带有链接的 div 和一个 div,当点击相应的链接时,我会在其中显示页面的内容。现在我有一个表单,它使用 mail() 提交邮件数据并显示如果 mail() 成功则发送该消息。但问题是在提交时,它会发送数据并在窗口中加载页面 submit.php。而不是我希望结果只显示在我的内容 div 中。

我在网上浏览了答案,发现了很多解决方案,都使用不同的方式。

我想知道哪种方法最好……哪种方法最有效?

注意:我得到的解决方案是:

1)制作一个ajax调用jquery提交表单,然后在现有的div中显示结果

2) 使用 javascript 发出 xmlHTTPheader 请求 将表单值提交到脚本而不加载新页面

3)使用成功处理程序和javascript在表单提交上显示div,没有重定向

4) 在 php 脚本上进行另一个重定向到网站

4

3 回答 3

1

hy Aman ...试试这个..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#bt_sn").click(function(e) {
    var to=$("#to").val();
    var from=$("#from").val();
    var message=$("#message");
    //AJAX begins here
    $.post("mail.php",{to_rec:to,from_rec:from,message_rec:message},function(data)
    {
        if(data=="SUC")
        {
            $("#result").html("Your mail has being sent successfully");
        }
        if(data=="FAI")
        {
            $("#result").html("Sending failed");
        }
    });



    });
</script>
</head>
<body>
<input type="text" id="to" />
<input type="text" id="from" />
<textarea id="message">
<button id="bt_sn" >Send</button>

发送

</body>
</html>

现在在php方面...

<?php
$to=$_POST['to_rec'];
$from=$_POST['from_rec'];
$message=$_POST['message_rec'];
// Now use these variables in your mailing section
//Now if mailing is succedd at some part just echo the success or failure
if(mailed)
echo "SUC";
else
echo "FAI"
?>

祝你好运:P :)

于 2013-06-09T13:52:22.317 回答
0

我会选择 AJAX,它是向您的网络服务器发送新请求而无需重新加载页面的最广泛使用的方式。

于 2013-06-09T11:44:46.663 回答
0

1), 2), 3) 都是一样的。“标题”一词甚至没有出现在链接 2) 中。'ajax' 是 XMLHttpRequest....(同步)(ja vascript)(X MLHttpRequest)昵称。

XMLHttpRequest = ajax = jQuery 用于生成 XMLHttpRequest 的各种方法

异步意味着用户在页面上执行其他操作之前不必坐下来等待 ajax 请求完成。该请求将在用户执行其他操作的同时执行。另一方面,如果您让提交通过,用户将无法执行任何操作,直到页面重新加载。

我不明白 4)。您的意思是让提交通过然后重新加载与当前页面完全相同但显示邮件消息的另一个页面?

于 2013-06-09T11:46:45.833 回答