首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax自动保存函数

Ajax自动保存函数
EN

Stack Overflow用户
提问于 2011-10-04 16:38:58
回答 3查看 2K关注 0票数 2

我目前正在通过Ajax向db表添加数据,如下所示:当用户按下id为#submit_btn的按钮时,它会触发下面的函数并发布数据。函数的代码如下所示。

代码语言:javascript
复制
$("#submit_btn").click(function () {
    $("#add_form").submit(function (e) {
        e.preventDefault();
        dataString = $("#add_form").serialize();
        $.ajax({
            type: "POST",
            url: "processor/dbadd.php",
            data: dataString,
            dataType: "json",
            success: function (result, status, xResponse) {
                //do something if ajax call is success
                var message = result.msg;
                var err = result.err;
                if (message != null) {
                    $.notifyBar({ cls: "success", html: message });
                }
                if (err != null) {
                      $.notifyBar({ cls: "error", html:err});
                }
            },
            error: function (e) {
                //ajax call failed
                alert(e);
            }
        });
    });

有没有办法修改这段代码,让它每2-3秒自动提交一次?(自动保存)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-04 17:01:23

请尝试此代码

代码语言:javascript
复制
<script>

    $(document).ready(function(){
        var int = window.setInterval("call();",2000);
            $("#add_form").submit(function (e) {
                  // PLACE YOUR SUBMIT CODE HERE
            });

            $("#submit_btn").click(function () {
                  $('#add_form').submit();
            }); 
    });

    function call(){
        $('#add_form').submit();
    }

    </script>

/新答案

代码语言:javascript
复制
<script>
    var int;

    $(document).ready(function(){

            $("#add_form").submit(function (e) {
                  // PLACE YOUR SUBMIT CODE HERE
            });

            $("#submit_btn").click(function () {
                  int = window.clearInterval(int)
                  int = window.setInterval("call();",3000);
            }); 
    });

    function call(){
        $('#add_form').submit();
    }

</script>

/第三个答案

代码语言:javascript
复制
<script>
    $(document).ready(function(){

            $("#add_form").submit(function (e) {
                  // PLACE YOUR SUBMIT CODE HERE
              });

             $("#submit_btn").click(function () {
                   int = window.setInterval("call();",3000);
                   $(this).attr({'disabled':'disabled'});
                   $(':input#autosave').attr({'disabled':'disabled'});
            }); 

            $(':input#autosave').click(function(){
                if($(this).is(':checked')){
                    $(':input#submit_btn').attr({'value':'Save & exit'});
                }
                else{
                    $(':input#submit_btn').attr({'value':'Save'});
                }
            });
    });

    function call(){
        $('#add_form').submit();
    }
</script>


</head>

<body>
<form id="add_form" action="" method="post">
<input type="checkbox" id="autosave" value="1"/>
<input id="submit_btn" type="submit" name="save" value="Save"/>

</form>
</body>
票数 4
EN

Stack Overflow用户

发布于 2011-10-04 16:52:06

考虑使用只需调用一次的setInterval,而不是必须反复设置的setTimeout

票数 2
EN

Stack Overflow用户

发布于 2011-10-04 16:47:34

一种可能的解决方案是将$('#add_form')的内容放在一个单独的函数中,比如submt(),然后在setTimeout上调用submit,或者如果单击了$('#submit_btn')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7645254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档