Javascript 在jQuery表单中,';成功';在';提交前';完成
我正在使用jQuery表单插件上传图像。我已经为Javascript 在jQuery表单中,';成功';在';提交前';完成,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在使用jQuery表单插件上传图像。我已经为beforesmit回调指定了一个淡入淡出动画,但是由于我在本地运行,在调用success函数之前,它没有时间完成 我在我的fade()中使用回调函数调用以确保一个淡入淡出在下一个淡入淡出开始之前完成,但这似乎不能保证调用它的函数完成 我做错什么了吗?在提交ajax调用之前,是否应该在提交之前完成 以下是两个回调: 提交前: function prepImageArea() { if (userImage) { userImage.fa
beforesmit
回调指定了一个淡入淡出动画,但是由于我在本地运行,在调用success
函数之前,它没有时间完成
我在我的fade()中使用回调函数代码>调用以确保一个淡入淡出在下一个淡入淡出开始之前完成,但这似乎不能保证调用它的函数完成
我做错什么了吗?在提交ajax调用之前,是否应该在提交之前完成
以下是两个回调:
提交前:
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);
});
}
我想你可能对那些淡入淡出的动画太花哨了:)。。。在beforeSubmit中,设置淡出,但函数立即返回,导致提交。我猜上传发生在3秒内,导致新图像在动画完成之前出现
所以如果你真的想要这个效果,那么你需要做图像淡出,微调器淡出,一旦完成触发上传。大概是这样的:
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
}
即使在提交表单之前调用beforeSubmit回调,userImage.fadeOut函数也是同步的(即,它生成一个单独的执行线程来执行淡入淡出动画,然后继续执行),并立即返回。淡入淡出动画需要1.5秒才能完成,当您在localhost上运行时,ajax响应的返回速度将超过1.5秒,因此您将看不到动画,在现实世界的应用程序中,ajax请求不太可能少于1.5秒,因此您很好:)