javascript — отображать эхо-вывод php во всплывающем окне.

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

Насколько я понимаю, javascript выполняется за пределами PHP, и, следовательно, значение выходной строки не обновляется (из-за отсутствия target?) И всегда ссылается на первого поставщика, то есть код 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>

1

Решение

Причина, по которой вы всегда получаете один и тот же текст во всплывающем окне, заключается в том, что ваш 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() Я полагаю, что у вас это есть, но если нет, создайте его или используйте что-то более подходящее для создания уникального значения для каждого поставщика.

Сретно 🙂

1

Другие решения

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

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

0

По вопросам рекламы [email protected]