Fancybox не работает после успешного вызова ajax

#c# #fancybox

#c# #fancybox

Вопрос:

Почему не работает fancybox после проверки проверки в c #?

fancybox вызывается после use PageMethods.ValidacionIsAdmin(onSuccessValidacionIsAdmin); , если он действителен, возврата базы данных, выполненной в:

 [WebMethod]
public static DeleteAccountResult ValidacionIsAdmin()
{
   DeleteAccountResult res = new DeleteAccountResult();

   ... // Query to database with ok results

   res.ok = true;

   return res;
}
  

Вызов ajax в клиенте для его проверки:

 jQuery(".delete a").click(function () {

            function onSuccessValidacionIsAdmin(data) {
                if (data.ok == true) {
                    jQuery("#<%= divError.ClientID %>").hide();

                    jQuery(".delete a").fancybox({
                        content: jQuery('#eliminar-cuenta').html(),
                        modal: false,
                        showCloseButton: false,
                        onComplete: function () {
                            jQuery("input[type=checkbox]").uniform()

                            jQuery('#privacidad').fancybox({
                                enableEscapeButton: false,
                                hideOnOverlayClick: false,
                                showCloseButton: true,
                                onComplete: function () {
                                    jQuery('#fancybox-close').off().on('click', function (e) {
                                        e.preventDefault();
                                        jQuery(".delete a").click();
                                    });
                                }
                            });
                        }
                    });
                }
                else {
                    jQuery("#<%= divError.ClientID %>").show();
                    jQuery("#lblError")[0].innerHTML = data.strError;
                }
            }

            PageMethods.ValidacionIsAdmin(onSuccessValidacionIsAdmin);
        });
  

Поведение выглядит так: после нажатия ссылки, которая открывает fancybox, она не открывается, похоже, что она «обновляет» веб, и я нажимаю ту же ссылку, и тогда она работает…

Я прочитал, что fancy не работает после ajax-вызова (в моем случае проверки c #)

Мой вопрос: почему это происходит?

Комментарии:

1. да, что я должен увидеть в fiddle?

2. вы можете создать демо-версию там и поместить ссылку здесь, чтобы другой пользователь мог поиграть с ней jsfiddle.net

3. как я могу имитировать ajax-запрос? в jsfiddle

Ответ №1:

После нескольких часов расследования я получил решение. Любопытно, что во всех свойствах ineas писать контент : … Я заменил как: ‘content’: …

Я добавил свойство ‘type’:’html’

После этого fancybox работал.

  jQuery(".delete a").fancybox({
    'content': jQuery('#eliminar-cuenta').html(),
     'type': 'html',
    'modal': false,
    'showCloseButton': false,
    'onComplete': function () {
        jQuery("input[type=checkbox]").uniform()

        jQuery('#privacidad').fancybox({
            enableEscapeButton: false,
            hideOnOverlayClick: false,
            showCloseButton: true,
            onComplete: function () {
                jQuery('#fancybox-close').off().on('click', function (e) {
                    e.preventDefault();
                    jQuery(".delete a").click();
                });
            }
        });
    }
});
  

Комментарии:

1. Я думаю, это был скорее type:'html' вариант, который сделал свое дело

2. Было любопытно, но когда я внес это изменение, все работает, за исключением того, что когда вы нажимаете закрыть в углу, диалоговое окно снова появляется, и это цикл. с showCloseButton до false я избегаю щелчка пользователя и пишу в конце диалогового окна обычную кнопку для закрытия. Но теперь он работает