如何使用ajax提交刷新fancybox中加载的内容

时间:2014-09-12 19:26:20

标签: jquery html ajax fancybox fancybox-2

我有一些表格,我正在装入Fancybox。当我用ajax提交这个,并且我获得成功时,我想在这个Fancybox窗口中重新加载同一页面,但我不知道如何。

我已经尝试$.fancybox.update()但是没有用。我正在使用Fancybox 2.

有人可以帮忙吗?

这是我的代码:

父页面上的

<script type="text/javascript" charset="utf-8">
    $("a.open-modal").fancybox({type: 'ajax'});
</script>

<a class="open-modal" href="edita_cadastro_imagens.asp?codProd=<%= rs_Pesq("codProd")%>&codCor=<%= rs_Pesq("codCor")%><%=str_pesq%>&ref=<%= rs_Pesq("referencia")%>"><i class="fa fa-camera fa-lg"></i></a>

以下是该页面的代码:edita_cadastro_imagens.asp

我的Ajax代码:

<script type="text/javascript">

    $(document).on('submit', '#f1', function(event) {

        event.preventDefault();

        var formData = new FormData($(this)[0]);
        console.log(formData);

        $.ajax({
            url: "upload_produtos.asp?cod_prod=<%=codProd%>&cod_cor=<%=codCor%>&Num_Img=1",
            type: "POST",
            data: formData,
            async: false,
            cache: false,
            contentType: false,
            processData: false,
            success: function(data){
                if (data == "erro") {
                    alert("erro")
                } else {
                    //$.fancybox.close();
                    $.fancybox.update();
                }
            }
        });

    });

</script>

和我的表格:

<form name="f1" id="f1" action="" method="post" enctype="multipart/form-data">
                <div class="div_coluna col_image">
                    <% if objFSO.FileExists(Server.MapPath("../produtos/mini") & "/"& codProd&"_"&codCor&" (1).jpg") then %>
                        <img src="../produtos/mini/<%= codProd%>_<%= codCor%> (1).jpg" border="0"/>
                    <% else %>
                        <img src= "imagens/imgNDisp.png" border="0"  height="49px" width="70px"/>
                    <% end if %>
                </div>
                <div class="div_coluna col_field">
                    <input type="file" name="txtArquivo1" accept="image/jpg" class="small_form_control" style="width:90%">
                </div>
                <div class="div_coluna col_bt">
                    <button class="button">ENVIAR</button>
                </div>
                <div class="clear"></div>
            </form>

3 个答案:

答案 0 :(得分:2)

也许我来不及添加我的解决方案。但是迟到总比没有好,对吧? :P

我的情况是:我在我加载的ajax fancybox上有一个刷新按钮,我想通过点击这个刷新按钮重新加载fancybox内容。 这个概念是点击fancybox触发器。

$('body').on('click','#refresh',function(){
    $('.fancybox').trigger('click');
});

希望有所帮助

答案 1 :(得分:1)

如果你的ajax代码在fancybox内容中,这是一个iframe,也许这可能会有效:

success: function (data) {
    if (data == "erro") {
        alert("erro")
    } else {
        location.reload();
    }
}

答案 2 :(得分:1)

如果您不使用iframe

,可以尝试此操作
jQuery.fancybox({'content' : html});