2011-03-21 46 views
0

使用表单将文件上传到我的服务器并且我想在表单验证时加载进度条。这是代码,我用jQuery:表单验证时Ajax加载不起作用


$(document).ready(function(){ 
    $("#uploadform").submit(function(e){ 
     var valid_form = validateForm(); 

     if (valid_form){ 
      $("#pb").load("/php/progressbar.php"); 
     } 
     return valid_form; 
    }); 
});

的问题是我收到提交此消息后:

GET http://ftplink.wedo/php/progressbar.php undefined (undefined)

但奇怪的是,我试图反转IF的条件,当窗体不验证,实际上发生ajax加载。到底是怎么回事??

+1

在validateForm方法中返回/正在发生什么? – 2011-03-21 15:33:47

+0

validateForm()中有什么? – corroded 2011-03-21 15:34:28

+0

如果表单填写正确,则validateForm返回true;如果未验证,则返回false。 – 2011-03-21 15:55:55

回答

0

不能说出你的问题的所有内容。我猜想表单提交发生在有活动的ajax请求的时候。您应该返回false,然后在ajax完成加载进度条时提交表单。

if (valid_form){ 
    $("#pb").load("/php/progressbar.php", function(){ 
     $("#uploadform").unbind('submit').submit(); // unbind so you are not recursive 
    }); 
} 
return false; 
+0

是的!这工作!谢谢!你今天是我的英雄!仍然好奇为什么它不是“正常的方式”。我认为这不是我第一次遇到这个问题...你说了一些关于“主动Ajax请求”的内容。当表单正在填充时,我确实做了更多的Ajax调用,但ajax请求如何保持活动?我想一旦它被加载,它就关闭了,不是吗? – 2011-03-21 15:43:11

+0

请通过点击左侧的勾号来接受此答案 - 您将获得额外声望的英雄奖励;) – Yaronius 2011-03-21 15:55:23

+0

欢迎。原因是因为Ajax是异步发生的。所以如果你发送一个ajax请求,他们发布表单 - 文档将尝试卸载,但ajax尚未完成。如果此答案有帮助,请接受解决方案。 :) – 2011-03-21 15:57:32