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