0

i am totally new to Ajax. On our site, we have a cart page where user can add, remove and change quantity of items using ajax w/o doing whole page load for the cart. My issue is i need to fire some 3rd party external calls whenever user updates his cart items.

i have this ajax call which calls the jsp which evaluates the parameters for the script. now this jsp contains 3rd party external script that i understand needs to be fired seperately. i am adding my code below and would really appreciate if someone can help

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);
        }
    );
}

below is the code in 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>

i understand that i will be omitting tag as i am using eval in my javascript.But how do i call external javascript?

Please help .

TIA

user1633800
  • 339
  • 1
  • 7
  • 14

2 Answers2

0

Let the criteo_ld_0.5.4.js loaded with you page and have the JSP page return only value of java script expressions without any script tag.

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); }
Keval
  • 8
  • 1
  • I need to call this external script in my ajax call after eval response . how can i do that? – user1633800 Aug 16 '13 at 20:37
  • add this line after eval. document.write(unescape("%3Cscript src='mywebsite.com/js/criteo_ld_0.5.4.js' async='true' type='text/javascript'%3E%3C/script%3E")); – Keval Aug 21 '13 at 18:14
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  ...