Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui 在AJAX发布之前关闭FancyBox_Jquery Ui_Jquery_Fancybox - Fatal编程技术网

Jquery ui 在AJAX发布之前关闭FancyBox

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

我有以下代码。我向用户展示一个fancybox,他们在表单上单击Submit,我关闭fancybox,在页面上向他们展示处理过程,并使用JQuery发布AJAX帖子。但fancybox的一些功能在AJAX表单发布完成之前是开放的,这给用户带来了困惑

   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帖子完成后才会关闭:(。