Как автоматически отправить эту форму без обновления страницы? - PullRequest
2 голосов
/ 01 августа 2011

Это все в php-файле

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html>
<head>
    <title>JQuery Form Example</title> 
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script><!--need at least one instance of jquery-->
    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script><!--ajax to use with jquery-->
    <script type="text/javascript">
    $(document).ready(function(){//when the document has loaded
        $("#myform").validate({//Q: what is validate?, myform gets validated
            debug: false,
            rules: {
                name: "required",//name and email are the only things passed
                email: {
                    required: true,
                    email: true//I guess this defines the input as an email
                }
            },
            messages: {//at what point is this message displayed?
                name: "Please let us know who you are.",
                email: "A valid email will help us get in touch with you.",
            },
            submitHandler: function(form) {//submit the form
                // do other stuff for a valid form
                $.post('process.php', $("#myform").serialize(), function(data) {//Q:what is serialization? myform gets serialized and assigned an action
                    $('#results').html(data);//what is this?
                });
            }
        });
    });

    window.onload=function( )
    {
    }


    </script>
    <style>
    label.error { width: 250px; display: inline; color: red;}
    </style>
</head>
<body>

<form name="myform" id="myform" action="" method="POST">  
<!-- The Name form field -->
    <label for="name" id="name_label">Name</label>  
    <input type="text" name="name" id="name" size="30" value="Charlie"/>  
    <br>
<!-- The Email form field -->
    <label for="email" id="email_label">Email</label>  
    <input type="text" name="email" id="email" size="30" value="obesemuleaccount@yahoo.com"/> 
    <br>
<!-- The Submit button -->
    <input type="submit" name="submit" value="Submit"> 
</form>
<!-- We will output the results from process.php here -->
<div id="results"><div>
</body>
</html>

<!--ok, so I want to first try some stuff out to get a feel for how the form works-->
<!--upload the form to the site somewhere-->
<!--access and play around with it-->
<!--then figure out how to submit to multiple php forms-->

Так что я использую Jquery и Ajax, и мне нужно отправить форму автоматически.

Я пытался использовать такие вещи, какdocument.myform.submit, но это не похоже на работу.Это работает, когда я не использую ajax, но это приводит к обновлению страницы до цели php-файла.

Я думаю, что мне просто не хватает некоторого синтаксиса.Я выполнил поиск и нашел несколько тем, подобных этой: Ajax auto form submit

Но я скорее любитель-дизайнер, поэтому я не совсем понимаю, о чем они говорят,Я бы не стал ставить задачу исправления своего кода на других, но я почти уверен, что изменения незначительны, и я долго пытался это выяснить.Большое спасибо всем, кто помогает!Пожалуйста, будьте очень подробны в своих указаниях, было бы лучше, если бы вы могли предоставить исправление непосредственно в самом коде.

edit: пожалуйста, не смейтесь слишком сильно над моими комментариями, я понимаю код(после долгих поисков) теперь намного лучше, это была ревизия, сделанная несколько часов назад.

двойное редактирование: вот пример php-скрипта с именем process.php, вам нужно будет отредактировать его, чтобы увидеть, работает ли автоматическая отправкахоть.Как упоминалось выше, вы можете сделать это с базой данных MySQL.

print "Form submitted successfully: <br>Your name is <b>".$_POST['name']."</b> and your email is <b>".$_POST['email']."</b><br>";

Ответы [ 4 ]

1 голос
/ 01 августа 2011

Ваш скрипт работает правильно. Я проверил это, и он отлично работает. Чтобы отправить форму автоматически, вы должны добавить эту строку в вашу функцию windo.onload:

$("#myform").submit();

Он автоматически отправит вашу форму при загрузке страницы.

Чтобы проверить вашу страницу и увидеть результат отправки формы, я предлагаю вам сначала отправить вашу страницу в простой HTML-файл (содержащий несколько слов ...), а затем перейти к файлу php.

И измените ваш sumbmitHandler в соответствии с именем html-файла, на который вы отправляете страницу: (в моем случае это текстовый файл target.html, содержащий ТОЛЬКО слова Hi)

submitHandler: function(form) {//submit the form
    // do other stuff for a valid form
    $.post('target.html', $("#myform").serialize(), function(data) {//Q:what is serialization? myform gets serialized and assigned an action
        alert(data);
        $('#results').html(data);//what is this?
    });
}

При загрузке страницы вы увидите и оповестите о содержании вашей HTML-страницы, и результаты div также будут заполнены этим содержимым.

Надеюсь, это поможет!

Пожалуйста, оцените.

1 голос
/ 01 августа 2011

Для минимальных усилий я думаю, что это будет работать

<script>

$(document).ready(function(){
        submit_form();
});

function submit_form () {
    $.post('process.php', $("#myform").serialize(), function(data) {
        $('#results').html(data);
    });
}

</script>

В: что проверяется? Myform получает подтверждение

A: Используя метод validate, он гарантирует, что данные в полях действительны до отправки формы.

В: в какой момент отображается это сообщение?

A: Когда проверка не проходит. Например, вы указали имя как «обязательное», а адрес электронной почты должен быть «электронным письмом» несколькими строками ранее.

В: что такое сериализация? myform получает сериализацию и назначается действие

A: Serialize считывает значение всех полей в форме и создает строку запроса, подходящую для GET и POST. В вашем случае после сериализации данные POST будут иметь имя=Charlie&email=obesemuleaccount@yahoo.com "

Q: что это?

A: «данные» передаются в качестве параметра в функцию обратного вызова. В этом случае вывод process.php будет записан во innerHTML из # ('# results')

1 голос
/ 01 августа 2011

этот плагин jquery должен работать http://malsup.com/jquery/form/

Просто

$('#myform').submit(function()
{
    $('#myform').ajaxForm();
    return false;
});

и ваша форма будет отправлена ​​без обновления страницы.

1 голос
/ 01 августа 2011

Вы можете использовать метод jQuery $ ('form'). Submit (), чтобы проверить, когда форма отправлена, а затем, после того как вы выполните все свои действия с AJAX, вы return false; и запретите отправку по умолчанию.

...