在提交操作工作不一致之前发布文本输入

时间:2010-11-13 16:40:52

标签: php jquery forms submit

我正在尝试创建一个同意书,让用户输入他们的名字。当按下提交按钮时,我将他们的文本输入发布到一个PHP文件,该文件将他们的名字邮寄给我(我知道有更简单的方法可以做到这一点)。然而,这种形式不一致;有时它记录用户的名字,有时则不记录。在我的电脑上它通常总是有效,所以我无法解决问题。

这是代码:

//submitlink is a dummy link
$("#submitlink").click(function(event){
    event.preventDefault();
    var name1val = $("#name1").val();
    if (!(name1val == '')){
        $.post("mail.php",
               { name : name1val, time : curr_time} 
        );
        //agree is a <form id="agree" action="nextpage.php">
        $("#agree").submit();
    else{
       //display error message
    }
 }

和mail.php是:

<?php

$name = $_POST['name'];
$text = $name . " has begun the survey at " . date("F j, Y, g:i a");
$result = mail('myemail', 'User has begun survey', $text);
?>

你能想到为什么这段代码不能工作的原因吗?如何在用户单击提交按钮后可靠地发布数据?

1 个答案:

答案 0 :(得分:1)

在确认AJAX调用成功之前,您正在提交第二个表单$("#agree").submit();。有时这会起作用;经常不会。将submit调用放入成功处理程序:

$.post("mail.php",
    { name : name1val, time : curr_time},
    function(){
        $("#agree").submit();
    }
);

这将在AJAX请求完成后调用代码。