отображать эхо-вывод php во всплывающем окне - PullRequest
0 голосов
/ 29 июня 2018

У меня есть следующий код, который выводит данные условий и положений (agb) для конкретного поставщика, используя php echo во всплывающем окне. Это прекрасно работает, пока есть только один поставщик. Когда перечислены дополнительные поставщики, отображаемые данные в новом окне такие же, как и для первого поставщика.

Насколько я понимаю, javascript выполняется за пределами PHP, и, следовательно, значение вывода строки не обновляется (из-за пропуска цели?) И всегда ссылается на первого поставщика, т.е. код JavaScript всегда будет заполнять новое окно. с тем же содержанием.

Я думаю, что мне нужно передать идентификатор поставщика или аналогичный функции javascript. Но как мне этого добиться?

PHP

<?php if ($_v->getId()): ?>  
<p>Seller: <?php echo $_v->getVendorName() ?> </p>  
<a href="" class="new-window">terms & conditions</a> 

<div style="display:none;">
    <div id="agb-text"><?php echo $_v->getData('agb')?></div>
</div>

JS:

<script type='text/javascript'>    
    jQuery(function($) {
        $('a.new-window').click(function(){

        var recipe =  window.open('','PrintWindow','width=600,height=600');
        var html = '<html><head><title>AGB</title></head><body><div id="my-id">' + $('<div />').append($('#agb-text').clone()).html() + '</div></body></html>';
        recipe.document.open();
        recipe.document.write(html);
        recipe.document.close();

    return false;
    });
});
</script>

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Причина, по которой вы всегда получаете один и тот же текст во всплывающем окне, заключается в том, что ваш div, содержащий текст, имеет один и тот же идентификатор agb-text, и для этого имени может быть задан только 1 идентификатор, другие будут игнорироваться. Так что вам лучше использовать классы и атрибуты данных.

Вы можете сделать это так:

<?php if ($_v->getId()): ?>  
<p>Seller: <?php echo $_v->getVendorName() ?> </p>  
<a href="" class="new-window" data-vendor="<?php echo $_v->getVendorID();?>">terms & conditions</a> 

<div style="display:none;">
    <div id="agb-text-<?php echo $_v->getVendorID();?>"><?php echo $_v->getData('agb')?></div>
</div>

<script type='text/javascript'>    

    jQuery(function($) {
        $('a.new-window').click(function(){
            var vendorID = $(this).data("vendor");
            var recipe =  window.open('','PrintWindow','width=600,height=600');
            var html = '<html><head><title>AGB</title></head><body><div id="my-id">' + $('<div />').append($('#agb-text-' + vendorID).clone()).html() + '</div></body></html>';
            recipe.document.open();
            recipe.document.write(html);
            recipe.document.close();

            return false;

        });
    });

</script>

Я использовал функцию $_v->getVendorID(), как я полагаю, она у вас есть, но если вы этого не сделаете, создайте ее или используйте то, что подходит вам лучше, чтобы создать уникальное значение для каждого поставщика.

Сретно:)

0 голосов
/ 29 июня 2018

попытайтесь использовать ajax-запрос для получения ваших данных и передайте свой идентификатор, используя onclick=<?php echo $_v->getId(); ?>.

но вам нужно сделать контроллер, чтобы получить ID.

...