我正在使用jQuery表单插件上传图片。我已经分配了一个淡入淡出动画来执行beforeSubmit
回调,但是当我在本地运行时,在调用success
函数之前它没有时间完成。
我在fade();
调用中使用了一个回调函数,以确保在下一个淡入淡出开始之前完成一个淡入淡出,但这似乎并不能保证调用它的函数已完成。
我做错了什么吗?beforeSubmit
不应该在ajax调用提交之前完成吗?
下面是两个回调函数:
beforeSubmit:
function prepImageArea() {
if (userImage) {
userImage.fadeOut(1500, function() {
ajaxSpinner.fadeIn(1500);
});
}
}
成功:
function imageUploaded(data) {
var data = evalJson(data);
userImage.attr('src', data.large_thumb);
ajaxSpinner.fadeOut(1500, function() {
userImage.fadeIn(1500);
});
}
发布于 2008-09-26 00:10:15
我认为你可能对那些淡入淡出的动画太花哨了:)…在beforeSubmit中,设置了fadeOut,但是函数立即返回,从而导致提交。我猜上传发生在3秒内,导致新图像在动画完成之前出现。
因此,如果你真的想要这个效果,那么你将需要做图像淡出,微调fadein,一旦这是完成触发上传。如下所示:
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
}
发布于 2008-09-26 00:11:22
即使在提交表单之前调用了beforeSubmit回调,userImage.fadeOut函数也是同步的(即,它会产生一个单独的执行线程来执行淡入淡出动画,然后继续执行),并且它会立即返回。淡入淡出动画需要1.5秒才能完成,当您在localhost上运行时,ajax响应返回的速度比1.5秒更快,因此您看不到动画,在实际应用程序中,ajax请求花费的时间不会少于1.5秒,因此您很好:)
https://stackoverflow.com/questions/136961
复制相似问题