1

Тема: Ошибка с отправкой заказа с корзины.

Изучив структуру, выяснил что по забитому адресу (/sendcart/) хранится ошибка "Произошла ошибка. Повторите попытку" только в закодированном варианте. Понятное дело, я нашёл переменную отвечающую за эту ошибку, но я не могу понять почему она выходит.
Исходные файлы не мои, я не разработчик этого сайта, но решить эту проблему я обязан.
Оставлю кусок кода, возможно в нём есть ошибка.
З.Ы. Очень объёмный кусок...

$('document').ready(function(){


    function result_handler( data ) {

        var data = JSON.parse( data );

        $('.message_top span').html( data.text );

        $('.message_top').fadeIn(250, function(){
            setTimeout( function(){
                $('.message_top').fadeOut(250 , function(){
                    //location.reload();
                    //location.href= '/my/orders/';
                    location.href= '/cart/?reload=true';
                });
            } , 3000 );
        });

    }

    function save_order_data( data ) {

        $.ajax({
        type: "POST",
        url: "/sendcart/",
        data: 'action=save_cart_data&data='+data,
        success: function(data){
           result_handler( data );
        },
        error: function(data) {
            result_handler( data );
        }
        });
    }

    function send_order_data( data ) {
        $.ajax({
        type: "POST",
        url: "/sendcart/",
        data: 'action=send_cart_data&data='+data,
        success: function(data){
           result_handler( data );
        },
        error: function(data) {
            result_handler( data );
        }
        });
    }

    $('body').on('click','.message_top i',function(){
        $(this).parent().fadeOut(250);
    });


    function GetData( data_provider ) {

        result = [];

      $('#cartItems tr').each(function( e ){

        if( $(this).attr('data-id-provider') == data_provider && $.trim($(this).find('td.colTitle a').text()).length > 0 ) {

            var title = $(this).find('td.colTitle a').text();
            var Amount = $(this).find('td.colAmount input').val();
            var Price = $(this).find('td.colPrice').attr('data-coast');
            var Weight = $.trim($(this).find('td.colWeight').text());
            var Unit = $(this).find('td.wCart-eCell.colAmount + td').text();
            var Offer = $.trim($(this).attr('data-offer'));

            var resultPrise = parseFloat($.trim($(this).find('div.wGroupTotal-eParamValue_price').html()));

            if( isNaN(resultPrise) ) {
                var resultPrise = 'null';
            }

            var resultWeight = parseFloat($.trim($(this).find('div.wGroupTotal-eParamValue_weight').html()));

            if( isNaN(resultWeight) ) {
                var resultWeight = 'null';
            }

            var data_product_id = $(this).attr('data-product-id');

            result.push(  encodeURIComponent(title)+'##$##'+Amount+'##$##'+Price+'##$##'+Weight+'##$##'+Unit+'##$##'+resultPrise+'##$##'+resultWeight+'##$##'+data_provider+'##$##'+data_product_id+'##$##'+Offer+'$%$%'  );

        }

      });


        return result;


    }


    $('.wGroupTotal-eSendOffer').click(function(){

      if( $(this).attr('disabled') == 'true' )     {
          return false;
      }

      var data_provider = $(this).parents('.wCart-eRow').attr('data-id-provider');

      send_order_data( GetData( data_provider ) );

      $(this).attr('disabled','true');

    });

function send_offer_data( data , action ) {
  $.ajax({
  type: "POST",
  url: '/ordersactions/?action='+action,
  data: data,
  success: function(data){

     if( data ) {

      data = JSON.parse(data);

      $('.wCartBlock-eItemsCount.jItemsCount').text( data.count );
      $('.wCartBlock-eItemsCount.jItemsCount').css('visibility','visible');
     }

  },
  error: function(e){

  } ,
  dataType: "html",
  });
  }

$('.wProductListItem-eToCart.jAddToCart').click(function(){

    //$(this).html('<i class="fa fa-check-circle" aria-hidden="true"></i> &nbsp; В корзине').css({'color':'green','cursor':'default !important'});
    //$(this).html('<i class="fa fa-check-circle" aria-hidden="true"></i> &nbsp; <i class="fa fa-shopping-cart" aria-hidden="true"></i>').css({'color':'green','cursor':'default !important'});
    //$(this).html('<i class="fa fa-shopping-cart" aria-hidden="true"></i>').css({'color':'green','cursor':'default !important'});
    //$(this).html('<i class="fa fa-shopping-cart" aria-hidden="true"></i>').attr('style','color:green; cursor:default !important;');
    $(this).html('В корзине').css({'color':'green','cursor':'default !important'});


    $('.wCartBlock-eItemsCount.jItemsCount').css('visibility','hidden');

    setTimeout( function(){ send_offer_data( 'data=["get_cart_data":"true"]' , 'get_cart_data' ) } , 1000 );


});

if( $('input').hasClass('inp_rate') ) {

    $('input.inp_rate').attr('value','1');

    setTimeout(function(){

       $('div.stars i').removeClass('act');
       $('.desc.descr').html('');
       $('.rate.rating').css('visibility','visible');
    },1000);

    $('.formStyle input[type="submit"]').attr('disabled','disabled');

    $('div.stars i').click(function(){
    $('.formStyle input[type="submit"]').removeAttr('disabled');
    });

}

$('.wProductListItem-eRatingColored.m0').each(function(){

    var max_rate = 5;

    var rate = ((parseFloat($(this).attr('data-rate')) /max_rate)*100).toFixed(0);

    $(this).css('width', rate+'%');


});


$('.wGroupTotal-eCalculateDelivery').click(function(){

    $('.delivery_block iframe').attr('src',$('.delivery_block iframe').attr('data-src'));
    $('.delivery_block').fadeIn(250);

});

$('.delivery_block i').click(function(){
    $('.delivery_block').fadeOut(250);
});


function PrintElem(elem)
{

    if( $('.wCart-eRow .jq-checkbox').hasClass('checked') ) {
        Popup($(elem).html());
    }


return true;
}

function Popup(data)
{
var mywindow = window.open('', 'Print', 'height=600,width=800');
mywindow.document.write('<html><head><title>Print</title>');
mywindow.document.write('</head><body >');
mywindow.document.write(data);
mywindow.document.write('</body></html>');
mywindow.document.close();
mywindow.focus();
mywindow.print();
mywindow.close();
return true;
}

$('.wProviderControls-eButton.mPrint').click(function(){

    $('#ToPrint').html('<h1 style="font-size: 30px; padding-top: 10px; margin-bottom: 31px;">Система поиска продукции vnalichii.ru</h1>');

    $('.mHeaderRow_tbody').each(function( e ){

        $('#ToPrint').append('<style>.tablehead{display:none;}.tablehead:first-child{display:table-row;}</style><table style="display:none;" class="content_print content_print'+e+'" width="100%"></table>');

        result = '';

        $(this).find('tr').each(function( f ){



            var provider_name = $(this).find('td.colProvider').text();
            var title = $(this).find('td.colTitle a').text();

            if( $.trim(title) != '' ) {

            var Amount = $(this).find('td.colAmount input').val();
            var Price = $(this).find('td.colPrice').attr('data-coast');
            var Weight = $.trim($(this).find('td.colWeight').text());
            var Unit = $(this).find('td.wCart-eCell.colAmount + td').text();
            var resultPrise = parseFloat($.trim($(this).find('div.wGroupTotal-eParamValue_price').html()));

            if( isNaN(resultPrise) ) {
                var resultPrise = 'null';
            }

            var resultWeight = parseFloat($.trim($(this).find('div.wGroupTotal-eParamValue_weight').html()));

            if( isNaN(resultWeight) ) {
                var resultWeight = 'null';
            }

            var data_product_id = $(this).attr('data-product-id');

            if( f <= 1 ) {
                var provider_title = 'Поставщик';
            }
            else {
                var provider_title = '';
            }


            if( resultPrise != 'null') {
                result = '<tr class="class_result"><td><br/><b>Итог:</b></br><b>Сумма - '+resultPrise+'</b><br/><b>Вес - '+resultWeight+'</b><br/><br/><br/><br/><br/></td></tr>';
            }



            $('#ToPrint .content_print'+e+'').append('<tr class="tablehead"><td>'+provider_title+'</td><td>Наименование</td><td>Ед. измерения</td></td></ts><td>Количество</td><td>Цена за ед, руб.</td><td>Вес (кг)</td></tr><tr><td class="nameprovider">'+provider_name+'</td><td>'+title+'</td><td>' + Unit + '</td><td>'+Amount+'</td><td>'+Price+'</td><td>'+Weight+'<br/><br/></td></tr>'+result+'');

            }



        });



    });


    $('.content_print tbody').each(function(){
        var count = $(this).find('.class_result').length;
        // remove data
        $(this).find('.class_result').each(function(e){
            e = e + 1;

            if( e != count ) {
                $(this).remove();
            }

        });

    });

    $('.mHeaderRow_tbody').each(function( e ){

         if( $(this).find('.wCart-eGroupCheckBox').hasClass('checked') ) {
             $('.content_print'+e+'').css('display','table');
         }

    });

    $('.mHeaderRow_tbody').each(function( e ){

         if( $(this).find('.content_print').css('display') == 'none' ) {
             $(this).remove();
         }

    });

    PrintElem('#ToPrint');

});

$('.text_comment i').click(function(){


    $('.text_comment_wrapepr').find('form').css('display','none');
    $('.text_comment_wrapepr').find('.text_comment').css('display','block');


        $(this).parents('.text_comment_wrapepr').find('.text_comment').slideUp(250);
        $(this).parents('.text_comment_wrapepr').find('form').slideDown(250);

});

function InitTopPositionCheck() {
    if( $(window).scrollTop() > 200 ) {
        $('.header_inner_wrapper_content').addClass('fixed_class');
    }
    else {
        $('.header_inner_wrapper_content').removeClass('fixed_class');
    }
}

/*
$(window).scroll(function(){

InitTopPositionCheck();

});

InitTopPositionCheck();
*/

$('.sLogoLine-eAdditionalLine .sLogoLine-eLabel').click(function(){

    if( $.trim( $('.wSearchLine-eInput').val() ).length > 0 ) {
        $('.wSearchLine-eForm').submit();
    }

});


$('.wAmountPicker input').on('change',function(){

    $(this).val( $(this).val().replace(',','.') );

});

$('.wCart-eRow .jq-checkbox').click(function(){

    if( $('.wCart-eRow .jq-checkbox').hasClass('checked') ) {
        $('.wProviderControls-eButton').addClass('active');
    }
    else {
        $('.wProviderControls-eButton').removeClass('active');
    }

});

$('.comments_blocks').click(function(){
    $('.comments_blocks_note').css('display','none');
});

$('.mSaveInProfile').click(function(){

      $('.mHeaderRow_tbody').each(function( e ){

         if( $(this).find('.wCart-eGroupCheckBox').hasClass('checked') ) {

             save_order_data( GetData( $(this).attr('data-provider') ) );
         }

      });

});


        $( "#datepicker" ).datepicker({
        });
        $.datepicker.regional['ru'] = {
            closeText: 'Закрыть',
            prevText: '&#x3c;Пред',
            nextText: 'След&#x3e;',
            currentText: 'Сегодня',
            monthNames: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь',
            'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
            monthNamesShort: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь',
            'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
            dayNames: ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'],
            dayNamesShort: ['вск', 'пнд', 'втр', 'срд', 'чтв', 'птн', 'сбт'],
            dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
            weekHeader: 'Нед',
            dateFormat: 'dd.mm.yy',
            firstDay: 1,
            isRTL: false,
            showMonthAfterYear: false,
            yearSuffix: ''
        };
        $.datepicker.setDefaults($.datepicker.regional['ru']);


    $('.orders_wrapper .top_buttons a').click(function(){
    if( $('.add_offers_wrapper').css('display') == 'none' ) {
    $('.add_offers_wrapper').slideDown(250);
    }
    else {
    $('.add_offers_wrapper').slideUp(250);
    }
    });

    if( $('div').hasClass('searchoffers_wrapper') ) {

        $('.offers_search_from input[type="text"]').val( $('.searchoffers_wrapper').text() );
    }


$('.city_select_wrap').each(function(){
    if( $(this).find('input').prop('checked') == true ) {
        $(this).prependTo('.provider_li_inner');
    }
});

$('.cityselect').click(function(){


    var location = window.location.search;

    var re=/(&byCity=")[^%byCityDelimiterEnd%]*/g;

    var location_new = location.replace(re,'$1');

    qwery = '';
    qwery_city = '';

    $('.provider_li_inner').find('input').each(function(){

        if( $(this).prop('checked') ) {
            qwery_city += $(this).val()+'%byCityDelimiter%';
        }


    });

    if( $.trim(qwery_city) != '' ) {
        qwery += '&byCity='+ qwery_city +'%byCityDelimiterEnd%';
    }


    window.location.href = $('.provider_li_inner input').attr('data-original')+qwery;

});


  function get_cart_data( data , action ) {

  $.ajax({
  type: "POST",
  url: '/ordersactions/?action='+action,
  data: data,
  success: function(data){

    alert( data );

  },
  error: function(e){
     /**/
  } ,
  dataType: "html",
  });
  }

  function send_cart_data( dataObj ) {
          $.ajax({
          type: "POST",
          url: '/cart/?Act=update',
          data: dataObj,
          success: function(data){

             //$('.wAmountPicker input').removeAttr('disabled');
             //get_cart_data( 'data=["data":"get_cart_data_full"]' , 'get_cart_data_full' );
             location.reload();
          },
          error: function(e){
             /*no handlers*/
          } ,
          });
  }


    $('.wAmountPicker-eButton.mInc.inc , .wAmountPicker-eButton.mDec.dec').click(function(){

        clearTimeout(amountUpdateTimer);
        amountUpdateTimer = setTimeout(ChangeHandler, 1000, $(this));
        // if( $('.wAmountPicker input').attr('disabled') !== 'disabled' && $('div').hasClass('amount_catalog_input') && $.trim($(this).parents('.wProductListItem.mList').find('.wProductListItem-eToCart.jAddToCart').text()) !== 'В корзину' ) {



        //$(this).parents('.wProductListItem.mList').find('.wProductListItem-eToCart.jAddToCart').html('<i class="fa fa-check-circle" aria-hidden="true"></i> &nbsp; В корзине').css({'color':'green','cursor':'default !important'});

        // }

    });

    function ChangeHandler( obj ) {

      if( $.trim(obj.parents('.wListProduct-eProductstListItem').find('.wProductListItem-eToCart').text() ) == 'В корзину' ) {
                return false;
      } else {


            var val = obj.parents('.wAmountPicker').find('input').val();
            var name = obj.parents('.wAmountPicker').find('input').attr('name');

            var updateObj = {};
            updateObj[name] = val;

            if(obj.parents('.wAmountPicker').find('input').attr('data-offer')) {
                var offerName = obj.parents('.wAmountPicker').find('input').attr('data-offer');
                var offerValue = obj.parents('.wAmountPicker').find('input').attr('data-offer-val');

                updateObj[offerName] = offerValue;
            }

            $('.wAmountPicker input').attr('disabled','disabled');
                send_cart_data(updateObj);
      }
    }
    var amountUpdateTimer;
    $('.wAmountPicker').find('input').on('change',function(){
        // ChangeHandler( $(this) );
  });

    $('.wAmountPicker').find('input').keyup(function(){
        var jthis = $(this);
        //ChangeHandler( $(this) );$(this)
        // $(this).parents('.wListProduct-eProductstListItem').find('.fa-refresh').css('display','inline');
  });


$('.wAuthBlock-eLink.inDialog').each(function(){
    if( $(this).text() == 'Войти' ) {
        $(this).remove();
    }
});

$('.wAuthBlock').prepend('<a class="login_new" href="/auth/">Войти</a> &nbsp; <a class="login_new" href="/register/">Зарегистрироваться</a>');


$('.wAmountPicker-eInput.fieldAmount').focus(function(){
    $(this).attr('data-value', $(this).val() );
    $(this).val('');
});

$('.wAmountPicker-eInput.fieldAmount').focusout(function(){
        var jthis = $(this);
        var wrapper = jthis.closest('.wProductListItem-eCell');
        var weightWrapper = wrapper.next();
        var weightPerUnit = weightWrapper.attr('data-weight');
      jthis.val( $(this).attr('data-value') );
        if(jthis.attr('data-float') == 'false') {
            if(jthis.val() < 1) {
                jthis.val((1).toFixed(0));
        weightWrapper.html((weightPerUnit).toFixed(0));
            } else {
        jthis.val(Math.floor(+jthis.val()).toFixed(0));
          weightWrapper.html((weightPerUnit * jthis.val()).toFixed(0));
            }
        } else {
      weightWrapper.html((weightPerUnit * jthis.val()).toFixed(3));
        }
    clearTimeout(amountUpdateTimer);
    amountUpdateTimer = setTimeout(ChangeHandler, 200, $(this));
});

$('.wAmountPicker-eInput.fieldAmount').on('change',function(){

    $(this).attr('data-value' , $(this).val().replace(',','.') );
    var data_url = $(this).parents('.wListProduct-eProductstListItem').find('a.wProductListItem-eToCart').attr('data-href').split('=');

    $(this).parents('.wListProduct-eProductstListItem').find('a.wProductListItem-eToCart').attr('data-href', data_url[0]+'='+data_url[1]+'='+$(this).val()+'&offer='+$(this).attr('data-offer-val'));


    //dfdf

});

$('.provider_li').click(function(){
    if( $('.provider_li_inner').css('display') == 'none' ) {
        $('.provider_li_inner').css('display','block');
    }
    else {
        $('.provider_li_inner').css('display','none');
    }
});

$('.wPaginator-eLink').each(function(){
    if( $(this).find('span').hasClass('text') || $(this).text() == '»' || $(this).text() == '«'  ) {
        $(this).addClass('paginator_mod');
    }
});

// FIX
$('body').on('click','.jCheckBox',function(){
    // if( $(this).find('input[value="company"]').prop('checked') ) {
    //     var wSearchLine_eInput = $.trim($('.wSearchLine-eInput').val());
    //     if( wSearchLine_eInput.length == 0 ) {
    //         location.href = 'http://'+ location.hostname + '/catalog/?query=&search_type=company';
    //     }

    // }
    // if( $(this).find('input[value="provider"]').prop('checked') ) {
    //     var wSearchLine_eInput = $.trim($('.wSearchLine-eInput').val());
    //     if( wSearchLine_eInput.length == 0 ) {
    //         location.href = 'http://'+ location.hostname + '/catalog/?query=&search_type=provider&sort=title&nsort=asc';
    //     }

    // }
});

// FIX

if( $('li').hasClass('mTopProducts') ) {
    $('a.wProductListItem-eTitle').attr('href','javascript:void(0);').css('cursor','default');
}

});

Повысить оценку Понизить оценку

Re: Ошибка с отправкой заказа с корзины.

В системе по умолчанию нет /sendcart/ адреса, если только /cart/. Поэтому скорее всего это сделано через кастомный модуль, не стандартный.

Изучив структуру, выяснил что по забитому адресу (/sendcart/) хранится ошибка "Произошла ошибка. Повторите попытку" только в закодированном варианте. Понятное дело, я нашёл переменную отвечающую за эту ошибку, но я не могу понять почему она выходит.

Включите отображение ошибок, чтобы сервер вернул развернутый ответ:
https://readyscript.ru/faq/#faq-errors

И посмотрите на ответ сервера.

3

Re: Ошибка с отправкой заказа с корзины.

Закусило Александр пишет:

В системе по умолчанию нет /sendcart/ адреса, если только /cart/. Поэтому скорее всего это сделано через кастомный модуль, не стандартный.

Изучив структуру, выяснил что по забитому адресу (/sendcart/) хранится ошибка "Произошла ошибка. Повторите попытку" только в закодированном варианте. Понятное дело, я нашёл переменную отвечающую за эту ошибку, но я не могу понять почему она выходит.

Включите отображение ошибок, чтобы сервер вернул развернутый ответ:
https://readyscript.ru/faq/#faq-errors

И посмотрите на ответ сервера.

Где я могу его посмотреть? Лог со стороны хоста?

Повысить оценку Понизить оценку

4

Re: Ошибка с отправкой заказа с корзины.

Ju1Ze пишет:

Где я могу его посмотреть? Лог со стороны хоста?

Если умеете, то лучше там.

А попроще по ссылке, что Александр предоставил "В корне сайта, на одном уровне с файлом setup.inc.php, необходмо разместить файл _local_settings.php, следующего содержания:"

5

Re: Ошибка с отправкой заказа с корзины.

Polo Art пишет:
Ju1Ze пишет:

Где я могу его посмотреть? Лог со стороны хоста?

Если умеете, то лучше там.

А попроще по ссылке, что Александр предоставил "В корне сайта, на одном уровне с файлом setup.inc.php, необходмо разместить файл _local_settings.php, следующего содержания:"

Лог на стороне хоста молчит в тряпочку...

Повысить оценку Понизить оценку

Re: Ошибка с отправкой заказа с корзины.

Если лог действительно не пишет ничего на хосте, то ошибка происходит не на стороне PHP. Значит нужно копаться в этом JS выводя в консоли того же хроме информацию через console.log

7

Re: Ошибка с отправкой заказа с корзины.

Закусило Александр пишет:

Если лог действительно не пишет ничего на хосте, то ошибка происходит не на стороне PHP. Значит нужно копаться в этом JS выводя в консоли того же хроме информацию через console.log

Не подскажете как?

Повысить оценку Понизить оценку

Re: Ошибка с отправкой заказа с корзины.

Ну надо учить javascript, чтобы уметь отлаживать код, подробнее о команде console.log тут  https://developer.mozilla.org/ru/docs/W … onsole/log . Если знаний не хватает, то обратитесь в нашу платную поддержку на helpdesk.readyscript.ru.

9 Отредактировано Polo Art (01.03.2019 15:25:17)

Re: Ошибка с отправкой заказа с корзины.

Закусило Александр пишет:

Если лог действительно не пишет ничего на хосте, то ошибка происходит не на стороне PHP. Значит нужно копаться в этом JS выводя в консоли того же хроме информацию через console.log

На стандартно настроенном хостинге обычно и нет никаких логов php - там только логи веб-сервера.
И максимум, что он покажет - ошибку 50х, но это явная ошибка скрипта.

Логирование ошибок PHP подключается через php.ini Или не подключается, а запрашиваются полные логи за период у хостера. Понятное дело, что на VPS и выше - всё твоё и так.

Или, как вариант - правильно, в php нет ошибок, а на стороне браузера имеются.

Вообще, просто бы ресурс показал ТС - вместе б разобрались.