Jquery ui 在AJAX发布之前关闭FancyBox
我有以下代码。我向用户展示一个fancybox,他们在表单上单击Submit,我关闭fancybox,在页面上向他们展示处理过程,并使用JQuery发布AJAX帖子。但fancybox的一些功能在AJAX表单发布完成之前是开放的,这给用户带来了困惑Jquery ui 在AJAX发布之前关闭FancyBox,jquery-ui,jquery,fancybox,Jquery Ui,Jquery,Fancybox,我有以下代码。我向用户展示一个fancybox,他们在表单上单击Submit,我关闭fancybox,在页面上向他们展示处理过程,并使用JQuery发布AJAX帖子。但fancybox的一些功能在AJAX表单发布完成之前是开放的,这给用户带来了困惑 function BeginProcess(){ $.fancybox.close(); $("#imgProcess").attr("src", "/admin/images/loading_animation.g
function BeginProcess(){
$.fancybox.close();
$("#imgProcess").attr("src", "/admin/images/loading_animation.gif");
$('#imgProcess').show();
PostAJAXForm();
}
function PostForm(FormData){
$.ajax({
type: "POST",
url: "process_image.jsp",
data: FormData,
contentType: "application/x-www-form-urlencoded",
async: false,
success: function(response) {
response = $.trim(response);
$('#imgProcess').delay(10000).hide();
return response;
},
error: function(xhr, ajaxOptions, thrownError) {
alert("There was an error. Please undo image and perform action again. " );
$('#lblProcess').delay(5000).hide();
return;
}
});
}
您需要在Jquery的Ajax的beforeSend函数中添加
$.fancybox.close()
http://api.jquery.com/ajaxSend/
这对你也有帮助
这里有一个片段:
var params = $(this).serialize();
var self = this;
$.ajax({
type: 'POST',
url: self.action,
data: params,
beforeSend: function(){
alert('Closing');
$.fancybox.close();
},
success: function(data){
alert('Finished processing form');
return false;
},
dataType: 'json'
});
很抱歉,如果该代码片段中有什么内容被弄乱或遗漏了,但您应该明白了。您可以包含
PostAJAXForm()
函数吗?此外,如果愿意,还可以将jQuery函数链接在一起。示例:$(“#imgProcess”).attr(“src”),“/admin/images/load_animation.gif”).show()代码>@Satish表示snipplr链接不正确。这只会在收到服务器的响应后关闭fancybox。同意,我认为粘贴了一个错误的链接,这里是正确的链接,向下滚动到Andrew Wirick的评论,他指出beforeSend:如果我在执行ajax请求之前就这样做,为什么它不会关闭?奇怪的是,它只有在ajax帖子完成后才会关闭:(。