如何通过Ajax调用加载外部javascript

时间:2013-08-16 18:06:14

标签: javascript ajax jsp yui

我对Ajax完全不熟悉。在我们的网站上,我们有一个购物车页面,用户可以使用ajax添加,删除和更改项目数量,而无需为购物车执行整页加载。我的问题是,每当用户更新购物车商品时,我都需要拨打第三方外部电话。

我有这个调用jsp的ajax调用,它调用脚本的参数。现在这个jsp包含我理解需要单独解雇的第三方外部脚本。我正在下面添加我的代码,非常感谢有人可以提供帮助

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

2 个答案:

答案 0 :(得分: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); }

答案 1 :(得分: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  ...