0

我正在使用DFP 广告管理系统 (DFP) 广告,但是当我使用 时jquery append,加载DoubleClick for Publishers (DFP) ads到一个 div 中,广告块是空的。怎么做才能让广告正常显示?

演示链接

谢谢。

<?php header("Content-type: text/html; charset=utf-8"); ?>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<?php if(!$_POST['number']){ ?>
<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js?ver=1.7.2'></script>
<script type='text/javascript'>
    var googletag = googletag || {};
    googletag.cmd = googletag.cmd || [];
    (function() {
    var gads = document.createElement('script');
    gads.async = true;
    gads.type = 'text/javascript';
    var useSSL = 'https:' == document.location.protocol;
    gads.src = (useSSL ? 'https:' : 'http:') + 
    '//www.googletagservices.com/tag/js/gpt.js';
    var node = document.getElementsByTagName('script')[0];
    node.parentNode.insertBefore(gads, node);
    })();
</script>
<script type='text/javascript'>
    googletag.cmd.push(function() {
        googletag.pubads().enableAsyncRendering();
        googletag.defineSlot('/17177879/ads_300_250_white_right', [300, 250], 'div-gpt-ad-1-1').addService(googletag.pubads());
        googletag.pubads().enableSingleRequest();
        googletag.enableServices();
    });
</script>
<script type="text/javascript">
jQuery(document).ready(function(){
    $(".bnews").live('click',function(){
        var nnum = $(this).attr('rel');
        googletag.cmd.push(function() {
            googletag.pubads().enableAsyncRendering();
            googletag.defineSlot('/17177879/ads_300_250_white_right', [300, 250], 'div-gpt-ad-' + nnum + '-1').addService(googletag.pubads());
            googletag.pubads().enableSingleRequest();
            googletag.enableServices();
        });
        $(this).css('display','none');
        $.ajax({
            url: "1.php", 
            dataType: "html",
            type: 'POST',
            data: 'number=' + nnum,
            success: function(data){ 
                $("#cc-wrap").append(data); 
            }               
        });
    });
});
</script>
<h1 class="bnews" rel="2">Append to div</h1>
<!-- some content here -->
<!-- ads_300_250_white_right -->
<div id='div-gpt-ad-1-1' style='width:300px; height:250px;'>
<script type='text/javascript'>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1-1'); });
</script>
<div id="cc-wrap"></div>
<?php }else{ ?>
<h1 class="bnews" rel="<?php echo ($_POST['number']+1); ?>">Append to div</h1>
<!-- some content here -->
<!-- ads_300_250_white_right -->
<div id='div-gpt-ad-<?php echo $_POST["number"]; ?>-1' style='width:300px; height:250px;'>
<script type='text/javascript'>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-<?php echo $_POST["number"]; ?>-1'); });
</script>
<?php } ?>
4

2 回答 2

2

您需要删除对 googletag.pubads().enableSingleRequest() 函数的两个调用...看起来这会阻止您在附加后请求更多广告。当我在您使用它的两个地方注释掉那段代码时,脚本开始工作......虽然它似乎仍然有点坏。

这是您的示例,带有注释的行,以便它可以工作:

<?php header("Content-type: text/html; charset=utf-8"); ?>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<?php if(!$_POST['number']){ ?>
<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js?ver=1.7.2'></script>
<script type='text/javascript'>
    var googletag = googletag || {};
    googletag.cmd = googletag.cmd || [];
    (function() {
    var gads = document.createElement('script');
    gads.async = true;
    gads.type = 'text/javascript';
    var useSSL = 'https:' == document.location.protocol;
    gads.src = (useSSL ? 'https:' : 'http:') +
    '//www.googletagservices.com/tag/js/gpt.js';
    var node = document.getElementsByTagName('script')[0];
    node.parentNode.insertBefore(gads, node);
    })();
</script>
<script type='text/javascript'>
    googletag.cmd.push(function() {
        googletag.pubads().enableAsyncRendering();
        googletag.defineSlot('/17177879/ads_300_250_white_right', [300, 250], 'div-gpt-ad-1-1').addService(googletag.pubads());
        //googletag.pubads().enableSingleRequest();
        googletag.enableServices();
    });
</script>
<script type="text/javascript">
jQuery(document).ready(function(){
    $(".bnews").live('click',function(){
        var nnum = $(this).attr('rel');
        googletag.cmd.push(function() {
            googletag.pubads().enableAsyncRendering();
            googletag.defineSlot('/17177879/ads_300_250_white_right', [300, 250], 'div-gpt-ad-' + nnum + '-1').addService(googletag.pubads());
            //googletag.pubads().enableSingleRequest();
            googletag.enableServices();
        });
        $(this).css('display','none');
        $.ajax({
            url: "1.php",
            dataType: "html",
            type: 'POST',
            data: 'number=' + nnum,
            success: function(data){
                $("#cc-wrap").append(data);
            }
        });
    });
});
</script>
<h1 class="bnews" rel="2">Append to div</h1>
<!-- some content here -->
<!-- ads_300_250_white_right -->
<div id='div-gpt-ad-1-1' style='width:300px; height:250px;'>
<script type='text/javascript'>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1-1'); });
</script>
<div id="cc-wrap"></div>
<?php }else{ ?>
<h1 class="bnews" rel="<?php echo ($_POST['number']+1); ?>">Append to div</h1>
<!-- some content here -->
<!-- ads_300_250_white_right -->
<div id='div-gpt-ad-<?php echo $_POST["number"]; ?>-1' style='width:300px; height:250px;'>
<script type='text/javascript'>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-<?php echo $_POST["number"]; ?>-1'); });
</script>
<?php } ?> 

如果您还有其他问题,请告诉我。

于 2012-10-02T17:00:19.853 回答
0

只需将广告块放入 iframe 即可,您不能只复制 Google 广告代码脚本

于 2012-10-07T10:12:49.717 回答