jQuery $ .get请求无效

时间:2013-07-13 13:09:02

标签: php javascript jquery forms get

我有一个文件上传表单,提交表单后会立即触发以下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()会触发值并触发代码。

3 个答案:

答案 0 :(得分: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" />

答案 1 :(得分:0)

Ok使用<iframe>

解决了这个问题
<form action="save.php" method="post" target="theiframe">...</form>
<iframe name="theiframe" src="about:blank"></iframe>

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

答案 2 :(得分:-1)

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