В IE не выполняется пересчет цены товаров. Предположительно проблема из-за 302 редеректа,IE не хочет его принимать...Помогите пожалуйста разобраться с этой проблемой.
Код |
---|
if (strlen($_REQUEST["BasketRefresh"]) > 0 || strlen($_REQUEST["BasketOrder"]) > 0 || strlen($_REQUEST["action"]) > 0) { if(strlen($_REQUEST["action"]) > 0) { $id = IntVal($_REQUEST["id"]); if($id > 0) { $dbBasketItems = CSaleBasket::GetList( array(), array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL", "ID" => $id, ), false, false, array("ID", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "CURRENCY") ); if($arBasket = $dbBasketItems->Fetch()) { if($_REQUEST["action"] == "delete" && in_array("DELETE", $arParams["COLUMNS_LIST"])) { CSaleBasket::Delete($arBasket["ID"]); } elseif($_REQUEST["action"] == "quantity" && isset($_REQUEST["amount"]) && in_array("DELAY", $arParams["COLUMNS_LIST"])) { if ($arBasket["DELAY"] == "N" && $arBasket["CAN_BUY"] == "Y") CSaleBasket::Update($arBasket["ID"], Array("QUANTITY" => $_REQUEST["amount"])); } elseif($_REQUEST["action"] == "change_size" && isset($_REQUEST["new_element"]) && in_array("DELAY", $arParams["COLUMNS_LIST"])) { if ($arBasket["DELAY"] == "N" && $arBasket["CAN_BUY"] == "Y"){ CModule::IncludeModule("iblock"); $res = CIBlockElement::GetByID($_REQUEST["new_element"]); $ar_res = $res->GetNext(); //pre($ar_res); die; CSaleBasket::Update($arBasket["ID"], Array("PRODUCT_ID" => $_REQUEST["new_element"], "PRODUCT_XML_ID"=>$ar_res["EXTERNAL_ID"])); } } elseif($_REQUEST["action"] == "shelve" && in_array("DELAY", $arParams["COLUMNS_LIST"])) { if ($arBasket["DELAY"] == "N" && $arBasket["CAN_BUY"] == "Y") CSaleBasket::Update($arBasket["ID"], Array("DELAY" => "Y")); } elseif($_REQUEST["action"] == "add" && in_array("DELAY", $arParams["COLUMNS_LIST"])) { if ($arBasket["DELAY"] == "Y" && $arBasket["CAN_BUY"] == "Y") CSaleBasket::Update($arBasket["ID"], Array("DELAY" => "N")); } unset($_SESSION["SALE_BASKET_NUM_PRODUCTS"][SITE_ID]); } } } else { if ($arParams["HIDE_COUPON"] != "Y") { $COUPON = Trim($_REQUEST["COUPON"]); if (strlen($COUPON) > 0) CCatalogDiscount::SetCoupon($COUPON); else CCatalogDiscount::ClearCoupon(); LocalRedirect($arParams["PATH_TO_ORDER"]); } $dbBasketItems = CSaleBasket::GetList( array("NAME" => "ASC"), array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL", "DELAY"=>"N", "CAN_BUY"=>"Y", "SUBSCRIBE"=>"N", ), false, false, array("ID", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "DELAY", "CAN_BUY", "PRICE", "QUANTITY", "CURRENCY") ); while ($arBasketItems = $dbBasketItems->Fetch()) { $arBasketItems['QUANTITY'] = $arParams['QUANTITY_FLOAT'] == 'Y' ? DoubleVal($arBasketItems['QUANTITY']) : IntVal($arBasketItems['QUANTITY']); $quantityTmp = $arParams['QUANTITY_FLOAT'] == 'Y' ? DoubleVal($_REQUEST["QUANTITY_".$arBasketItems["ID"]]) : IntVal($_REQUEST["QUANTITY_".$arBasketItems["ID"]]); if ($arBasketItems["DELAY"] == "N" && $arBasketItems["CAN_BUY"] == "Y") { $arFields = array(); if (in_array("QUANTITY", $arParams["COLUMNS_LIST"])) $arFields["QUANTITY"] = $quantityTmp; if (count($arFields) > 0 && ($arBasketItems["QUANTITY"] != $arFields["QUANTITY"] && in_array("QUANTITY", $arParams["COLUMNS_LIST"]))) CSaleBasket::Update($arBasketItems["ID"], $arFields); } } } if (strlen($_REQUEST["BasketOrder"]) > 0) { LocalRedirect($arParams["PATH_TO_ORDER"]); } else { unset($_REQUEST["BasketRefresh"]); unset($_REQUEST["BasketOrder"]); LocalRedirect($APPLICATION->GetCurPage()); } } |