在弹出窗口中显示php echo输出

问题描述 投票:1回答:2

我有以下代码,在弹出窗口中使用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 php echo window.open
2个回答
1
投票

你总是在弹出窗口中获得相同文本的原因是因为保存文本的div具有相同的agb-text ID,并且只能设置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()函数,因为我假设你拥有它,但是如果你没有,请创建一个或使用更适合你的东西为每个供应商生成一个唯一值。

祝你好运:)


0
投票

尝试使用ajax请求获取您的数据,并使用onclick=<?php echo $_v->getId(); ?>传递您的ID。

但是,您需要让控制器获取ID。

© www.soinside.com 2019 - 2024. All rights reserved.