jQuery .load()干扰购物车功能

时间:2013-07-15 23:57:09

标签: php jquery zen-cart

我现在已经挣扎了2个小时,一直在寻找解决方案。

我正在使用Zen-Cart安装,我决定抛出一些动态横幅。基本上我使用jQuery.get()从banner1.php加载一个URL - banner1.php有一些网址(这是产品页面)的数组,它从数组中回传一个随机网址。

随后jQuery加载了随机URL,然后我使用jQuery.load()函数加载产品图片,产品价格和产品名称。

所有这一切都很好,但问题是看起来load()函数干扰了我的Zen-Cart“重定向”功能。假设您正在查看产品,我们将其称为“产品A” - 您决定通过单击“登录”按钮从该页面登录 - 您将进入登录页面,输入您的登录详细信息,然后点击“提交”。标准结果是,如果您已成功登录,则会返回“产品A”页面。但是使用我的小动态jQuery横幅混合,而不是重定向回“产品A”,它加载jQuery.load()用于生成随机横幅的一个页面。我有3个横幅,每个都动态加载一个随机网址,但这里是横幅1的示例:

<script type="text/javascript">


$.get("banner1.php", function(getbannerlink1) {

$( document ).ready(function() {


$("#banner1").load(getbannerlink1+ " #globalproductimage"); 

$('#banner1name').load(getbannerlink1+ " #productName", function(result) {
var banner1text = $('#banner1name').html();
banner1text = jQuery(banner1text).text();
$("#banner1name").html(banner1text);

});

$('#banner1price').load(getbannerlink1+ " #productPrices", function(result) {
var banner1prices = $('#banner1price').html();
banner1prices = jQuery(banner1prices ).text();
$("#banner1price").html(banner1prices );

});


var bannerlink1 = $("<a>").attr("href", getbannerlink1);
$("#banner1name").wrap(bannerlink1);
$("#banner1price").wrap(bannerlink1);
$("#banner1").wrap(bannerlink1);
});

});
</script>

事情是,一旦客户登录,我不太关心错误的重定向,当客户一次实际结账时,问题也会发生最令人失望。例如,如果他们要在购物篮中放置产品,请单击Checkout按钮,然后要求他们登录,一旦他们登录,而不是继续使用标准购物车功能将他们带到结帐的第一步进程,它将它们重定向到动态横幅已加载的其中一个页面。我不知道如何解决这个问题,我尝试了一些奇怪的事情无济于事。为了参考,可能需要这个,这是在登录后处理重定向的Zen-Cart功能:

if (sizeof($_SESSION['navigation']->snapshot) > 0) {
      //    $back = sizeof($_SESSION['navigation']->path)-2;
      //if (isset($_SESSION['navigation']->path[$back]['page'])) {
      //    if (sizeof($_SESSION['navigation']->path)-2 > 0) {
      $origin_href = zen_href_link($_SESSION['navigation']->snapshot['page'], zen_array_to_string($_SESSION['navigation']->snapshot['get'], array(zen_session_name())), $_SESSION['navigation']->snapshot['mode']);
      //            $origin_href = zen_back_link_only(true);
      $_SESSION['navigation']->clear_snapshot();
      zen_redirect($origin_href);
    } else {
      zen_redirect(zen_href_link(FILENAME_DEFAULT, '', $request_type));
    } 

请帮忙!也许有一种更简单的方法我应该这样做:/

我注意到它加载的页面始终是jQuery.load()加载的最后一个标题。就像我提到的那样,总共有3个横幅,所以如果Banner 2的价格是最后一个要加载的价格,那就是在重定向中加载的URL。

编辑: banner1.php(这只是从数组中生成一个随机url,但目前出于测试目的,我在数组中只有一个URL):

<?php
$strings = array('http://example.com/index.php?main_page=product_info&cPath=3&products_id=104');
echo $strings[array_rand($strings)];
?>

1 个答案:

答案 0 :(得分:0)

横幅页面似乎正在设置快照href。我假设您在设置会话导航快照的横幅网址中包含了一些Zen购物车库。您可以设置一些内容来忽略快照的URL。

添加横幅代码可能有助于解决此问题。

虽然我不推荐它,但您可以添加逻辑,以便在登录后不会重定向到某些页面。