【问题标题】:How do I automatically submit this form without refreshing the page?如何在不刷新页面的情况下自动提交此表单?
【发布时间】:2011-10-17 08:41:38
【问题描述】:

这一切都在一个 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

但我更像是一个业余设计师,所以我不太明白他们在说什么。我不会把修复我的代码的任务放在其他人身上,但我很确定这个变化很小,而且我已经有一段时间试图解决这个问题。非常感谢任何有帮助的人!请在您的指示中提供非常详细的信息,实际上最好是直接在代码中提供修复。

编辑:请不要对我的 cmets 笑得太厉害,我现在(经过多次谷歌搜索)更好地理解了代码,这是几个小时前的修订版。

双重编辑:这是一个名为 process.php 的示例 php 脚本,您需要对其进行编辑以查看自动提交是否有效。如上所述,您可以使用 MySQL 数据库执行此操作。

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

【问题讨论】:

    标签: php jquery ajax submit


    【解决方案1】:

    我认为这会奏效

    <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 数据将为 name=Charlie&email=obesemuleaccount@yahoo.com"

    问:这是什么?

    A:“数据”作为参数传递给回调函数。这种情况下process.php的输出会被写入#('#results')的innerHTML

    【讨论】:

    • 哇,谢谢!我认为所有答案都有效,而且我喜欢 jquery 表单插件。我之前用过。这个答案是最简洁的,它教会了我更多关于序列化的知识。我知道该表单有效,只是没有自动提交,下次我问这个问题时,我会尝试更具体,不那么累。谢谢!
    【解决方案2】:

    您可以使用 jQuery $('form').submit() 方法检查表单何时提交,然后在完成所有 AJAX 操作后,return false; 并阻止默认提交。

    【讨论】:

      【解决方案3】:

      这个 jquery 插件应该可以工作http://malsup.com/jquery/form/

      很简单

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

      您的表单将在不刷新页面的情况下提交。

      【讨论】:

        【解决方案4】:

        您的脚本运行正常。我测试了它,它工作正常。 要自动提交表单,您必须在windo.onload 函数中添加这一行:

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

        它会在页面加载时自动提交您的表单。

        为了测试您的页面并查看表单提交结果,我建议您先将页面提交到一个简单的 html 文件(包含一些单词...),然后再提交 php 文件。

        并根据您提交页面的 html 文件的名称更改您的 sumbmitHandler: (在我的例子中,文本文件是 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 结果也将填充此内容。

        希望对你有帮助!

        请评价。

        【讨论】:

          猜你喜欢
          • 2022-10-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-12
          • 2019-12-21
          • 2012-07-23
          • 1970-01-01
          • 2019-04-19
          相关资源
          最近更新 更多