Открытие php-файла в mymodal box и передача в него переменной

#php #jquery #variables #modal-dialog

#php #jquery #переменные #модальный диалог

Вопрос:

У меня есть модальное окно, которое открывает содержимое из нижнего колонтитула страницы (скрытый div). Я пытаюсь запустить модальный и отобразить содержимое другого файла .php, передавая переменную, которую можно использовать для ВЫБОРА из базы ДАННЫХ Какие-либо идеи?

Вот код:

Ссылка на модальное окно

 <a href="#" data-reveal-id="myModal">Click Me For A Modal</a>
  

JS

 (function($) {
 $('a[data-reveal-id]').live('click', function(e) {
    e.preventDefault();
    var modalLocation = $(this).attr('data-reveal-id');
    $('#' modalLocation).reveal($(this).data());
});
  

Файл .php с содержимым modalbox

 <div id="myModal" class="reveal-modal">
 <div>content called from DB using passed variable</div>
 <p>more content</p>
 <a class="close-reveal-modal">amp;#215;</a>
  

У кого-нибудь есть какие-нибудь идеи, пожалуйста?

————————————————————————————

ОБНОВЛЕНО! Вот полный js-файл:

 (function($) {


$('a[data-reveal-id').live('click', function(e)
{
e.preventDefault();
var modalLocation = $(this).attr('data-reveal-id');

$.ajax({
    url: 'code.php',
    data: '$varible', 
    type: 'GET', 
    error: function()
    {
        // If there's an issue, display an error...
    },
    success: function(output)
    {
        $('#'   modalLocation).innerHTML(output).reveal( $(this).data() );
    }
});
})


$.fn.reveal = function(options) {


    var defaults = {  
        animation: 'fadeAndPop', //fade, fadeAndPop, none
        animationspeed: 300, //how fast animtions are
        closeonbackgroundclick: true, //if you click background will modal close?
        dismissmodalclass: 'close-reveal-modal' //the class of a button or element that will close an open modal
    }; 


    var options = $.extend({}, defaults, options); 

    return this.each(function() {


        var modal = $(this),
            topMeasure  = parseInt(modal.css('top')),
            topOffset = modal.height()   topMeasure,
            locked = false,
            modalBG = $('.reveal-modal-bg');


        if(modalBG.length == 0) {
            modalBG = $('<div class="reveal-modal-bg" />').insertAfter(modal);
        }           

        //Entrance Animations
        modal.bind('reveal:open', function () {
          modalBG.unbind('click.modalEvent');
            $('.'   options.dismissmodalclass).unbind('click.modalEvent');
            if(!locked) {
                lockModal();
                if(options.animation == "fadeAndPop") {
                    modal.css({'top': $(document).scrollTop()-topOffset, 'opacity' : 0, 'visibility' : 'visible'});
                    modalBG.fadeIn(options.animationspeed/2);
                    modal.delay(options.animationspeed/2).animate({
                        "top": $(document).scrollTop() topMeasure   'px',
                        "opacity" : 1
                    }, options.animationspeed,unlockModal());                   
                }
                if(options.animation == "fade") {
                    modal.css({'opacity' : 0, 'visibility' : 'visible', 'top': $(document).scrollTop() topMeasure});
                    modalBG.fadeIn(options.animationspeed/2);
                    modal.delay(options.animationspeed/2).animate({
                        "opacity" : 1
                    }, options.animationspeed,unlockModal());                   
                } 
                if(options.animation == "none") {
                    modal.css({'visibility' : 'visible', 'top':$(document).scrollTop() topMeasure});
                    modalBG.css({"display":"block"});   
                    unlockModal()               
                }
            }
            modal.unbind('reveal:open');
        });     

        //Closing Animation
        modal.bind('reveal:close', function () {
          if(!locked) {
                lockModal();
                if(options.animation == "fadeAndPop") {
                    modalBG.delay(options.animationspeed).fadeOut(options.animationspeed);
                    modal.animate({
                        "top":  $(document).scrollTop()-topOffset   'px',
                        "opacity" : 0
                    }, options.animationspeed/2, function() {
                        modal.css({'top':topMeasure, 'opacity' : 1, 'visibility' : 'hidden'});
                        unlockModal();
                    });                 
                }   
                if(options.animation == "fade") {
                    modalBG.delay(options.animationspeed).fadeOut(options.animationspeed);
                    modal.animate({
                        "opacity" : 0
                    }, options.animationspeed, function() {
                        modal.css({'opacity' : 1, 'visibility' : 'hidden', 'top' : topMeasure});
                        unlockModal();
                    });                 
                }   
                if(options.animation == "none") {
                    modal.css({'visibility' : 'hidden', 'top' : topMeasure});
                    modalBG.css({'display' : 'none'});  
                }       
            }
            modal.unbind('reveal:close');
        });     


        //Open Modal Immediately
    modal.trigger('reveal:open')

        //Close Modal Listeners
        var closeButton = $('.'   options.dismissmodalclass).bind('click.modalEvent', function () {
          modal.trigger('reveal:close')
        });

        if(options.closeonbackgroundclick) {
            modalBG.css({"cursor":"pointer"})
            modalBG.bind('click.modalEvent', function () {
              modal.trigger('reveal:close')
            });
        }
        $('body').keyup(function(e) {
            if(e.which===27){ modal.trigger('reveal:close'); } // 27 is the keycode for the Escape key
        });


        function unlockModal() { 
            locked = false;
        }
        function lockModal() {
            locked = true;
        }   

    });//each call
}//orbit plugin call
})(jQuery);
  

Вот html-триггер:

 <a class="big-link" href="#" data-reveal-id="myModal">Click Me to open modal</a>
  

Вот code.php файл, содержащий модальный:

 <div id="myModal" class="reveal-modal"><div>content called from DB using passed variable</div><p>more content</p><a class="close-reveal-modal">amp;#215;</a>
  

Проблема на данный момент заключается не в передаче переменной, а в фактическом заполнении модала содержимым code.php

Еще раз спасибо, что уделили время решению этой проблемы!

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

1. Мне кажется, что вам нужно выполнить Ajax-вызов PHP-файла, а затем вывести данные в ваш myModal div. Вы смотрели на Ajax info от jQuery?

2. Это звучит многообещающе, однако я не уверен, как вы собираетесь применить это к этому коду?

Ответ №1:

Не зная, какие переменные вы хотите передать и что вы пытаетесь захватить, вы можете изменить это. Я его не тестировал, поэтому вам, возможно, придется немного подправить.

 $('a[data-reveal-id').live('click', function(e)
{
    e.preventDefault();
    var modalLocation = $(this).attr('data-reveal-id');

    $.ajax({
        url: 'URL_TO_YOUR_PHP',
        data: 'YOUR_VARIABLE', // Look at how to pass data using GET, or POST
        type: 'GET' or 'POST', // Choose one, and pass the data above appropriately
        error: function()
        {
            // If there's an issue, display an error...
        },
        success: function(output)
        {
            $('#'   modalLocation).innerHTML(output).reveal( $(this).data() );
        }
    });
})
  

— РЕДАКТИРОВАТЬ —

Теперь проблема в том, что у вас еще нет #myModal доступного в вашем HTML. Итак, что вы хотите сделать, это соответствующим образом изменить следующую строку:

 $('#'   modalLocation).innerHTML(output).reveal( $(this).data() );
-- BECOMES --
$("body").append(output).reveal( $(this).data() );
  

В вашем CSS вы захотите изначально скрыть свое модальное поле, чтобы оно было открыто надлежащим образом.

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

1. Спасибо вам за это, я протестирую это и сообщу об этом.

2. Привет, Кейси, я протестировал этот код и с помощью инструмента аудита Chrome dev получаю сообщение об ошибке Uncaught type error: undefined не является функцией. Есть идеи?

3. Не видя всего вашего кода, я не могу сказать, в чем может быть проблема. Извините. Вы можете обновить свой вопрос своим новым кодом, и мы сможем перейти оттуда.

4. ах-ха, мы кое-чего добились, это выглядит многообещающе, я поиграю с этим. Еще раз большое вам спасибо за вашу помощь!!!