Размещать ввод текста перед отправкой действия, работающего непоследовательно - PullRequest
0 голосов
/ 13 ноября 2010

Я пытаюсь создать форму согласия, и пользователь должен ввести свое имя.Когда кнопка отправки нажата, я отправляю их текстовый ввод в файл 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 Ответ

1 голос
/ 13 ноября 2010

Вы отправляете вторую форму $("#agree").submit();, прежде чем подтвердить, что вызов AJAX был успешным. Иногда это будет работать; часто это не так. Поместите вызов submit в обработчик успеха:

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

При вызове AJAX будет вызываться код.

...