0

我有一个文件上传表单,提交表单后立即触发以下 javascript:

$("#uploader").submit(function() {
    $("#indicator").show();
    alert("Submitted");
    var refresh = setInterval(function() {
        $.get("progress.php?getprogress&randval=" + Math.random(), function(data) {
            alert("Got " + data);
            $("#indicator .bar div").width(data + "%");
            if (data == 100) {
                clearTimeout(refresh);
                $("#indicator").addClass("done");
            }
        });
    }, 250);
});

我添加了一些警报进行调试,我得到了alert("Submitted"),但不是警报数据的那个。php 很好,在单独的窗口中打开它会给出正确的值,但 javascript 没有得到它。另一个奇怪的事情是,如果我停止页面加载,alert()带有值的 会触发并处理代码。

4

3 回答 3

2

您没有取消表单提交,这意味着您的页面将刷新。要取消提交,您可以致电event.preventDefault()

$("#uploader").submit(function(e) {
    e.preventDefault();

只需将评论移到答案中,因为您的问题实际上比您上面写的要多。

对提交执行两个操作并期望它们都发生是不可能的。特别是当一个人试图在提交年龄时运行代码时。有执行文件上传的 JavaScript 库,您可能需要查看它们。但基本思想是将表单提交到页面上的隐藏 iframe。

<form action="YourSubmitPage.php" method="POST" target="hiddenIframe">
    ...fileds here...
</form>
<iframe id="hiddenIframe" name="hiddenIframe" style="display:none" />
于 2013-07-13T13:11:13.630 回答
0

好的,通过使用以下方法解决了这个问题<iframe>

<form action="save.php" method="post" target="theiframe">...</form>
<iframe name="theiframe" src="about:blank"></iframe>

仍在使用javascript,但没有e.preventDefault();

于 2013-07-13T13:24:26.453 回答
-1

我希望你的函数在一个$(document).ready()语句中

于 2013-07-13T13:13:30.877 回答