0

我对 Ajax 完全陌生。在我们的网站上,我们有一个购物车页面,用户可以使用 ajax 添加、删除和更改商品数量,而无需为购物车进行整个页面加载。我的问题是,每当用户更新他的购物车商品时,我都需要触发一些第 3 方外部调用。

我有这个 ajax 调用,它调用评估脚本参数的 jsp。现在这个jsp包含我理解需要单独触发的第3方外部脚本。我在下面添加我的代码,如果有人可以提供帮助,我将不胜感激

var callExternalUpdate = function(secure) {
    var ajaxParams = "secure=" + secure;
    ajax('POST',
        '/abc/my-ajax.jsp',
        ajaxParams, 
        function(r) {
            eval(r.responseText);
        },
        function(r) {
            //alert(r.responseText);
        }
    );
}

下面是 my-ajax.jsp 中的代码

<script type="text/javascript" src="http://www.mywebsite.com/js/criteo_ld_0.5.4.js" async="true"></script>
<script type="text/javascript">var CRITEO_CONF = [[{ 
    pageType: 'basket', 
    'Product IDs': [123], 
    'Prices': [10], 
    'Quantities': [1] 
    }], [6507,'ppr','us.','110',[[7721658, 7721659]],{'Product IDs':['i',1], 'Prices':['p',1], 'Quantities':['q',1]}]]; 
    if (typeof (CRITEO) != "undefined") { CRITEO.Load(false); }
</script>

我知道我将在我的 javascript 中使用 eval 时省略标签。但是我如何调用外部 javascript?

请帮忙 。

TIA

4

2 回答 2

0
        Magento CE or EE Criteo retargeting New OneTag

        **Home Page - code :**

        <script type="text/javascript" src="//static.criteo.net/js/ld/ld.js" async="true"></script> 

        <script type="text/javascript"> window.criteo_q = window.criteo_q || []; window.criteo_q.push( { event: "setAccount", account: **Your Account Number**}, { event: "setCustomerId", id: "<?php if(Mage::getSingleton('customer/session')->isLoggedIn()) {$customerData = Mage::getSingleton('customer/session')->getCustomer();echo $customerData->getId();
         }?>"}, { event: "setSiteType", type: "d"}, { event: "viewHome"} ); </script>



        **Listing Page Code :**


        <script type="text/javascript" src="//static.criteo.net/js/ld/ld.js" async="true"></script> 

        <script type="text/javascript"> 
        window.criteo_q = window.criteo_q || [];
        window.criteo_q.push( 
        { event: "setAccount", account: **Your Account Number**}, 
        { event: "setCustomerId", id: "<?php if(Mage::getSingleton('customer/session')->isLoggedIn()) {$customerData = Mage::getSingleton('customer/session')->getCustomer();echo $customerData->getId();
         }?>"}, 
        { event: "setSiteType", type: "d"}, 
        { event: "viewList", item: [<?php 
        $cat_id = Mage::getModel('catalog/layer')->getCurrentCategory()->getId(); 
        $category = Mage::getModel('catalog/category')->load($cat_id); 
        $products = $category->getProductCollection()
        ->addCategoryFilter($category)
        ->addAttributeToSort('entity_id','desc')
        ->addAttributeToFilter('type_id','configurable')
        ->addAttributeToSelect('sku');
        $products->setPage(1, 3);
        $skus = '';
        foreach ( $products as $_product ): 
        $skus .= '"'.$_product->getSku().'",';
        endforeach;
        $skus = substr($skus,0,-1);
        print($skus);
        ?>], keywords: "<?php echo $this->htmlEscape($this->getCurrentCategory()->getName()) ?>" } ); </script>


        Product Page  Code :

        <script type="text/javascript" src="//static.criteo.net/js/ld/ld.js" async="true"></script> 

        <script type="text/javascript"> 
        window.criteo_q = window.criteo_q || []; window.criteo_q.push( 
            { event: "setAccount", account: **Your Account Number**}, 
            { event: "setCustomerId", id: "<?php if(Mage::getSingleton('customer/session')->isLoggedIn()) {$customerData = Mage::getSingleton('customer/session')->getCustomer();echo $customerData->getId();
         }?>"}, 
            { event: "setSiteType", type: "d"}, 
            { event: "viewItem", item: "<?php echo $_product->getSKU() ?>" }
         ); 
        </script>


       **Basket  Page  Code :**

        <script type="text/javascript" src="//static.criteo.net/js/ld/ld.js" async="true"></script> 
        <script type="text/javascript"> 
        window.criteo_q = window.criteo_q || []; 
        window.criteo_q.push( 
            {event: "setAccount", account: **Your Account Number**}, 
            {event: "setCustomerId", id: "<?php if(Mage::getSingleton('customer/session')->isLoggedIn()) {$customerData = Mage::getSingleton('customer/session')->getCustomer();echo $customerData->getId();
     }?>"}, 
            {event: "setSiteType", type: "d"}, 
            {event: "viewBasket", item: [ 
            <?php   
                $count = 0;
                $cartLines = Mage::helper('checkout/cart')->getCart()->getItems();
                foreach ($cartLines as $cartLine):
                $count++;
                $product = Mage::getModel('catalog/product')->load($cartLine->getProductId());
                if ($product->getSpecialPrice()) {
                    $price = $product->getSpecialPrice();
                } else {
                    $price = $product->getPrice();
                }

                /* Get Configurable Sku from Simple product SKU/ID.
                 * If there is no configurable/simple product set up, then just use the standard Sku display
                 * */
                $parentId = Mage::getResourceSingleton('catalog/product_type_configurable')->getParentIdsByChild($cartLine->getProductId());
                $configurableProductSku = Mage::getModel('catalog/product')->load($parentId)->getSku();
                if ($configurableProductSku)  {
                    $IdString .= $configurableProductSku;
                }
                else  {
                    $idString .= $cartLine->getSku();
                }
        //      $IdString .= $cartLine->getSku();
                $PriceString .= $price;
                $quantityString .= (int) $cartLine->getQty();   
            ?>  
            <?php if( $count == count($cartLines)): ?>

                { id: "<?php echo $IdString; ?>", price: <?php echo number_format($PriceString,2,'.',' ')?>, quantity: <?php echo $quantityString ?> } 
                <?php else: ?>
                { id: "<?php echo $IdString; ?>", price: <?php echo number_format($PriceString,2,'.',' ')?>, quantity: <?php echo $quantityString ?> }, 
                <?php endif; ?>

            <?php 
                $IdString = '';
                $PriceString = '';
                $quantityString ='';
                endforeach;
            ?>
            ]}); </script>


**Success Page Code:**

    <script type="text/javascript" src="//static.criteo.net/js/ld/ld.js" async="true"></script> 
    <script type="text/javascript"> 
    window.criteo_q = window.criteo_q || []; 
     window.criteo_q.push( {event: "setAccount", account: **Your Account Number**}, 
        {event: "setCustomerId", id: "<?php if(Mage::getSingleton('customer/session')->isLoggedIn()) {$customerData = Mage::getSingleton('customer/session')->getCustomer();echo $customerData->getId();
 }?>"}, 
        {event: "setSiteType", type: "d"}, 
        {event: "trackTransaction" , id: "<?php echo $this->getOrderId(); ?>", item: [
        <?php   
            $count = 0;
            foreach ($items as $item):
            $count++;
            /* Get Configurable Sku from Simple product SKU/ID.
             * If there is no configurable/simple product set up, then just use the standard Sku display
             * */
            $parentId = Mage::getResourceSingleton('catalog/product_type_configurable')->getParentIdsByChild($item->getProductId());
            $configurableProductSku = Mage::getModel('catalog/product')->load($parentId)->getSku();
            if ($configurableProductSku)  {
                $IdString .= $configurableProductSku;
            }
            else  {
                $idString .= $item->getSku();
            }
            $PriceString .= $item->getPrice();
            $quantityString .= (int)$item->getQtyOrdered();
        ?>  
            <?php if( $count == count($items)): ?>
            { id: "<?php echo $IdString; ?>", price: <?php echo number_format($PriceString,2,'.',' ')?>, quantity: <?php echo $quantityString ?> } 
            <?php else: ?>
            { id: "<?php echo $IdString; ?>", price: <?php echo number_format($PriceString,2,'.',' ')?>, quantity: <?php echo $quantityString ?> }, 
            <?php endif; ?>

        <?php 
            $IdString = '';
            $PriceString = '';
            $quantityString ='';
            endforeach;
        ?>
        ]}); </script>



----------------------------------
And That's All  ...
于 2013-11-25T21:56:00.593 回答
0

criteo_ld_0.5.4.js与您的页面一起加载,并让 JSP 页面仅返回 java 脚本表达式的值,而无需任何脚本标记。

var CRITEO_CONF = [[{ 
pageType: 'basket', 
'Product IDs': [123], 
'Prices': [10], 
'Quantities': [1] 
}], [6507,'ppr','us.','110',[[7721658, 7721659]],{'Product IDs':['i',1], 'Prices':['p',1], 'Quantities':['q',1]}]]; 
if (typeof (CRITEO) != "undefined") { CRITEO.Load(false); }
于 2013-08-16T20:17:52.827 回答