2013-09-23 54 views
0

長途跋涉後,我設法使用jQuery和PHP的組合Ajax加載我的openx廣告。ajaxloading與jQuery和PHP的openx

您的需要是

  1. 你自己的的OpenX服務器和訪問/{openxPath}/www/delivery/alocal.php。
  2. 一個小包裝,使廣告腳本ajaxable
  3. 的Ajax-loader在

第三和最容易的部分是Ajax的裝載機:

$(document).ready(function() { 
    $.ajax({ 
     url: "http://{urlToYourOpenxWrapper/adwrapper.php", 
     type: "POST", 
     data: {m:'f'}, // 'code' of ad to load 
     async: false, 
     dataType: 'html' 
    }).done(function (answer) { 
     $('#footerBanner').html(answer); 
    }); 
}); 

第二部分是一點點有點棘手,也許沒有前途。但是2.8.11它正在工作。 出於安全原因,我製作了從字符到zone-id的映射。我不知道這是否真的有必要。

adwrapper.php:

define('MAX_PATH', 'pathToYoutOpenXServer'); 
if (@include_once(MAX_PATH . '/www/delivery/alocal.php')) { 
    if (!isset($phpAds_context)) { 
     $phpAds_context = array(); 
    } 
    switch ($_POST["m"]) { 
     case 'f': // code of the ad to load 
      $zoneId = 12; 
      $bannerTarget = 'footerBanner zone_' . $zoneId; 
      $bannerCode = view_local('', 12, 0, 0, '', '', '0', $phpAds_context, ''); 
      break; 
    } 
     // get banner id 
    $regex = '/(.*)(ox_[^\']*)(.*)/'; 
    preg_match($regex, $bannerCode['html'], $matches); 
    $oxId = $matches[2]; 
     // compile new insert code 
    $replaceWith = '$("' . $oxId . '").after'; 
    $banner = str_replace('document.write', $replaceWith, $bannerCode['html']); 
    $banner = str_replace('<script type=\'text/javascript\' src=\'http://openx.lift-online.de/www/delivery/fl.js\'></script>' , 
     '<!-- replaced -->' , 
     $banner); 

     // use a single object for each ad to prevent problem in multitasking 
    $banner = str_replace('ox_swf', 'ox_swf_' . $zoneId, $banner); 

     // sometime the oxId (unique Id???) is the same and than zones are mixed 
     // so I append the zoneId to the oxId 
    $banner = str_replace($oxId, $oxId . '_' . $zoneId, $banner); 
    echo '<div class="' . $bannerTarget . '">' . $banner . '</div>'; 
} 
+0

是否有問題? – DGS

+0

這個問題似乎是無關緊要的,因爲毫無疑問 – madth3

回答

1

感謝,工作就可以了,並不能失敗失敗,但是從你很好的解決方案!

我只需要使用GET請求,必須添加對PHP的包裝

header("Access-Control-Allow-Origin: *"); 
header("Access-Control-Request-Method: GET");