setInterval和表单提交

时间:2014-04-02 10:50:31

标签: php jquery

我正在尝试在文件上传时使setInterval正常工作。

我的HTML:

<form action="test.php" method="POST" enctype="multipart/form-data" id='jimbo'>
   <input type="hidden" name="<?=ini_get('session.upload_progress.name'); ?>" value="myupload" />
   <input type="file" name="file1" />
   <input type="submit" id='submitme' />
</form>

忽略php会话上传这个问题的一部分,这一切都正常运行。我的问题是jQuery。我希望setInterval()在表单上传的同时运行。但我无法弄清楚如何在jQuery中编写它。这就是我所拥有的:

$(document).ready(function () {
    $("#jimbo").submit(function () {
        setInterval(function() {
            $.ajax({
                url: "ajx.php",
                success: function (data) {
                    $("#feedback").html(data + Math.random(999));
                }
            });
            //$("#feedback").html("hello " + Math.random(999));
        },500);
        //return false;
    });
});

如果我在那里留下return false;,我会得到输出但没有文件上传。如果我删除它,我上传文件但没有输出。我怎么能同时拥有这两个?

2 个答案:

答案 0 :(得分:1)

问题是因为在文件上传完成之前由于提交表单而导致浏览器被重定向。这就是return false使事情有效的原因 - 它阻止了表单提交。尝试将事件挂钩到按钮单击。

<form action="test.php" method="POST" enctype="multipart/form-data" id='jimbo'>
   <input type="hidden" name="<?=ini_get('session.upload_progress.name'); ?>" value="myupload" />
   <input type="file" name="file1" />
   <input type="button" id='submitme' />
</form>
$("#submitme").click(function () {
    setInterval(function() {
        $.ajax({
            url: "ajx.php",
            success: function (data) {
                $("#feedback").html(data + Math.random(999));
            }
        });
    }, 500);
    $('#jimbo').submit(); // submit the form manually
});

答案 1 :(得分:-2)

试试这个。

$(document).ready(function () {
       $("#submitme").click(function () {

             var refreshId = setInterval( function() 
             {
                   $.ajax({
                    url: "ajx.php",
                    success: function (data) {
                        $("#feedback").html(data + Math.random(999));
                    }
                });

             }, 500);

          });
    });