我有以下代码,可在弹出窗口中使用php echo输出特定供应商的条款和条件数据(agb)。只要只有一个供应商,这就可以正常工作。当列出其他供应商时,新窗口中显示的数据与第一个供应商相同。
据我了解,javascript是在PHP之外执行的,因此字符串输出的值不会更新(因为缺少目标?),并且始终引用第一个供应商,即JavaScript代码将始终填充新窗口具有相同的内容。
我认为我需要传递供应商ID或类似于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>
答案 0 :(得分:1)
总是在弹出窗口中获得相同文本的原因是,保存文本的div具有相同的ID agb-text
,并且只能使用该名称设置1个ID,其他ID忽略了。因此,最好使用类和数据属性。
您可以这样做:
<?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()
函数,但是如果没有,请创建一个函数或使用更适合您的东西为每个供应商产生唯一的价值。
Sretno:)
答案 1 :(得分:0)
尝试使用ajax请求获取数据,并使用onclick=<?php echo $_v->getId(); ?>
传递ID。
但是,您需要让控制器获取ID。