【发布时间】:2018-06-29 13:08:43
【问题描述】:
我有以下代码,在弹出窗口中使用 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>
【问题讨论】:
-
好的,看起来您正在预先构建弹出内容,然后使用 javascript 简单地将预先构建的子 html 传送到窗口中。由于您使用的是 window.open (而不是模式)...您可以改为针对内容的 php url,而不是穿梭。
-
另一种方法是使用 modal 和 ajax,然后使用传递的 id 为新的 html 内容点击 php。涉及更多一点,但在演示中更“精明”。
-
@IncredibleHat,感谢您提供的替代方案!
标签: javascript php echo window.open