首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在jQuery表单中,在“beforeSubmit”完成之前调用了“success”

在jQuery表单中,在“beforeSubmit”完成之前调用了“success”
EN

Stack Overflow用户
提问于 2008-09-25 23:49:43
回答 2查看 2.6K关注 0票数 1

我正在使用jQuery表单插件上传图片。我已经分配了一个淡入淡出动画来执行beforeSubmit回调,但是当我在本地运行时,在调用success函数之前它没有时间完成。

我在fade();调用中使用了一个回调函数,以确保在下一个淡入淡出开始之前完成一个淡入淡出,但这似乎并不能保证调用它的函数已完成。

我做错了什么吗?beforeSubmit不应该在ajax调用提交之前完成吗?

下面是两个回调函数:

beforeSubmit:

代码语言:javascript
运行
复制
function prepImageArea() {
  if (userImage) {
    userImage.fadeOut(1500, function() {
      ajaxSpinner.fadeIn(1500);
    });
  }
}

成功:

代码语言:javascript
运行
复制
function imageUploaded(data) {
  var data = evalJson(data);
  userImage.attr('src', data.large_thumb);
  ajaxSpinner.fadeOut(1500, function() {
    userImage.fadeIn(1500);
  });
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-09-26 00:10:15

我认为你可能对那些淡入淡出的动画太花哨了:)…在beforeSubmit中,设置了fadeOut,但是函数立即返回,从而导致提交。我猜上传发生在3秒内,导致新图像在动画完成之前出现。

因此,如果你真的想要这个效果,那么你将需要做图像淡出,微调fadein,一旦这是完成触发上传。如下所示:

代码语言:javascript
运行
复制
if (userImage) {
  userImage.fadeOut(1500, function() {
    ajaxSpinner.fadeIn(1500, function(){
        //now trigger the upload and you don't need the before submit anymore
    });
  });
}
else {
   // trigger the upload right away
}
票数 2
EN

Stack Overflow用户

发布于 2008-09-26 00:11:22

即使在提交表单之前调用了beforeSubmit回调,userImage.fadeOut函数也是同步的(即,它会产生一个单独的执行线程来执行淡入淡出动画,然后继续执行),并且它会立即返回。淡入淡出动画需要1.5秒才能完成,当您在localhost上运行时,ajax响应返回的速度比1.5秒更快,因此您看不到动画,在实际应用程序中,ajax请求花费的时间不会少于1.5秒,因此您很好:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/136961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档