Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.02.2015, 08:59
Новичок на форуме
Отправить личное сообщение для invox Посмотреть профиль Найти все сообщения от invox
 
Регистрация: 06.02.2015
Сообщений: 1

Купить в 1 клик Bitrix Jquery
Добрый день. Нашел на просторах интернета решение для реализации "купить в 1 клик " для битрикс. Но не совсем рабочее.Сам разобраться уже долго не могу. Понимаю что проблема в скрипте jquery.
Итак есть в корне сайта папка one_click_order , в ней два файла.
index.php - собственно форма вызываемого окна.
Код
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
if(CModule::IncludeModule("catalog")){
    $ID = intval($_GET['product_id']);
    $ar_res = CCatalogProduct::GetByIDEx($ID);
    if (is_array($ar_res)){
        global $USER;           
        $rsUser = CUser::GetByID($USER->GetID()); 
        $arUser = $rsUser->Fetch();          
        ?>
        <a href="<?=$ar_res['DETAIL_PAGE_URL']?>"><?=$ar_res['NAME']?></a>
        <fo rm id="one_click_form" name="one_click_form" action="/one_click_order/handler.php" method="POST">
            <input type="hidden" name="product_id" value="<?= $ID ?>">
            ФИО: <input type="text" name="fio" value="<?=$USER->GetFullName()?>" ><br/>
            Телефон: <input type="text" name="phone" value="<?=$arUser['PERSONAL_PHONE']?>"><br/>
            E-mail: <input type="text" name="email" value="<?=$USER->GetEmail()?>"><br/>
            Комментарий к заказу: <textarea class="inputtext" name="message" value="""></textarea><br/>
            <input type="submit" value="Отправить">       
        </form>
    <?
    }
}



и файл handler.php - в нем происходит формирование заказа в системе сайта.
Код
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");    
$is_error=true;
$error_text = '';
if (isset($_POST['product_id']) && isset($_POST['fio']) && isset($_POST['phone']) && isset($_POST['email']) ){
    if(CModule::IncludeModule("catalog") && CModule::IncludeModule("sale")){        
        $product_id = intval($_POST['product_id']);
        $ar_res = CCatalogProduct::GetByIDEx($product_id);
        if ($ar_res){
            $is_error=false;
            global $USER;
            $user_id = $USER->GetID();
            if(!$user_id )
            {
                //пароль для нового пользователя
                $pass = rand(100000, 999999);
                //группы, в которых он будет состоять
                $groups = array(3,4,5);         
                $user_id = $USER->Add(array(
                    "NAME"              => $_POST['fio'],
                    "EMAIL"             => $_POST['email'],
                    "LOGIN"             => $_POST['email'],
                    "PERSONAL_PHONE"     => $_POST['phone'],
                    "LID"               => "ru",
                    "ACTIVE"            => "Y",
                    "GROUP_ID"          => $groups,
                    "PASSWORD"          => $pass,
                    "CONFIRM_PASSWORD"  => $pass,
                ));
                $USER->Authorize($user_id);
                $error_text = $USER->LAST_ERROR;
            }
            if ($user_id > 0){
                //PAY_SYSTEM_ID, PRICE_DELIVERY, DELIVERY_ID, DISCOUNT_VALUE, TAX_VALUE можно не указывать
                $arFields = array(
                    "LID" => SITE_ID,
                    "PERSON_TYPE_ID" => 1,
                    //Вместо ### укажите конкретный ID цены
                    "PRICE" => $ar_res['PRICES'][id#1]['PRICE'],
                    "PAYED" => "N",
                    "CANCELED" => "N",
                    "STATUS_ID" => "N",                 
                    "CURRENCY" => "RUB",
                    "USER_ID" => $user_id,                  
                    "USER_DESCRIPTION" => $_POST['message']
                );
                $ORDER_ID = IntVal(CSaleOrder::Add($arFields));
                if ($ORDER_ID > 0){
                    $arProps = array();
                     $arFields = array(
                        "PRODUCT_ID" => $ar_res['ID'],
                        "PRICE" => $ar_res['PRICES'][8]['PRICE'],
                        "CURRENCY" => "RUB",
                        "WEIGHT" => $ar_res['PRODUCT']['WEIGHT'],
                        "QUANTITY" => 1,
                        "DELAY" => "N",
                        "LID" => $ar_res['LID'],
                        "CAN_BUY" => "Y",
                        "ORDER_ID" => $ORDER_ID,
                        "NAME" => $ar_res['NAME'],
                        "MODULE" => "catalog",
                        "NOTES" => "",
                        "DETAIL_PAGE_URL" => $ar_res['DETAIL_PAGE_URL'],
                    );
                    $add = CSaleBasket::Add($arFields);
                    if (intval($add) > 0)
                        echo 'ok';
                }
            }
        }
    }
}
if ($error_text != '')
    echo str_replace('<br>', "\n", $error_text);
else if ($is_error){
    echo 'ошибка';
}


кнопка "купить в 1 клик имеет вид:
Код
$too = $arResult['ID'];
<a id="one_click_buy" href="/one_click_order?product_id=<?php echo $too?>">Купить в один клик</a>

скрипт jquery:Код:

<script>
$(document).ready(function () {
$("#one_click_buy").click(function(){
    $( "#modal_window" ).load( $(this).attr("href"), function() {
        order_handler();
    });
});
function order_handler()
{
    $("#one_click_form").submit(function(){
        if (
            $('[name="fio"]').val() == '' ||
            $('[name="phone"]').val() == '' ||
            $('[name="email"]').val() == '' ||
 
        ){
            alert('Заполните поля со звездочками.');
        }
        else{
             var str = $(this).serialize();
             $.post($(this).attr('action'), str, function (data) {
                if (data == 'ok'){
                    alert('Заказ успешно оформлен');
                    window.location.href='';
                }else{
                alert(data);
                }               
            });
        }
});
});
</script>


библиотеки jQuery подключены и работают. проблема в самом коде. не пойму зачем в коде есть ссылка на #modal_window когда такой элемент нигде больше не встречается. Буду благодарен за любую помощь.

Последний раз редактировалось invox, 06.02.2015 в 09:51.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический подсчет в таблице muraig jQuery 5 11.10.2014 16:54
хочу инвайт на хабр macdack Оффтопик 45 28.07.2013 23:18
jquery - не работает клик по кнопке выбора варианта bartonom jQuery 0 04.10.2012 13:35
Вопрос поддержки старых методов jQuery antonM jQuery 1 04.10.2012 00:08
Jquery событие если сделан клик за елементом! shureg Библиотеки/Тулкиты/Фреймворки 1 07.05.2011 20:03