партнер компании 1с-битрикс
сайт фрилансера Сергея Эстрина
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
Универсальная галерея - модуль для битрикс
Это форум по решению для битрикс «Модуль Быстрый заказ (архив)».
Страницы: 1
Ответить
RSS
Съезжает верстка
 
При подключении компонента grain:fastorder в AJAX режиме (передавая на вход компоненту AJAX_MODE => "Y" ;) - перестают корректно срабатывать отложенные функции ($APPLICATION->GetTitle()) - происходит излишняя буферизация - так, имея код <h1><?$APPLICATION->GetTitle(false);?></h1>
<div>
...
...
</div>

в заголовок (h1) - попадает содержимое блока <div> - едет верстка страницы. Если отключить AJAX_MODE или же не производить вызова отложенных функций (убрать вызов GetTitle) - верстка находится в порядке.
 
Алексей, здравствуйте! А данная проблема наблюдается конкретно с этим компонентом, не со всеми вообще, т.е. ее нет со стандартными компонентами битрикс?
 
Да, проблема конкретно с этим компонентом.
 
Алексей, может быть дело в этой строке в шаблоне компонента?
Код

if($arResult["SUCCESS"]) {

   
LocalRedirect($APPLICATION->GetCurPageParam("success=".$arResult["HASH"], Array("success")));
} elseif(
$_REQUEST["success"] == $arResult["HASH"]) {
   echo 
$arParams["OK_TEXT"];
}
Т.е. при использовании стандартного аякс механизма, может стоит не использовать переадресацию через LocalRedirect при успешном добавлении заказа?

Хотя не знаю, каким образом здесь может быть замешан $APPLICATION->GetTitle().

Также вы можете не использовать стандартный механизм аякс, а сделать свой обработчик, вот пример на jquery для шаблона данного компонента.

Код

<?

if(!
defined("B_PROLOG_INCLUDED")||B_PROLOG_INCLUDED!==true)die();

if(
$arParams["ONLY_SHOW_FORM"]!="Y") {

   if(
$_REQUEST["ajax_fastorder"]=="Y") {
   
      
$APPLICATION->RestartBuffer();

      if(
$arResult["SUCCESS"]) {
   
         echo 
json_encode(Array("result"=>"success","message"=>"<i class=\"icon-check\"></i>".$arParams["OK_TEXT"]));
   
      } elseif(!empty(
$arResult["ERROR_MESSAGE"])) {

         echo 
json_encode(Array("result"=>"error","message"=>implode("<br />",$arResult["ERROR_MESSAGE"])));

      }

      die();
   
   } else {
   
      if(
$arResult["SUCCESS"]) {
      
         echo 
$arParams["OK_TEXT"];
      
      } elseif(!empty(
$arResult["ERROR_MESSAGE"])) {
      
         foreach(
$arResult["ERROR_MESSAGE"] as $v)
            
ShowError($v);
            
      }
   
   }

}

if(
$arParams["ONLY_PROCESSING"]=="Y") return;

?>

<div class="popup-done" id="grain_fast_order_success" style="display: none"></div>

<form action="<?=$APPLICATION->GetCurPage()?>" method="POST" class="grain-fast-order-order" id="grain_fast_order">

   <span class="grain-fast-order-error" id="grain_fast_order_error" style="display: none"></span>

   <span class="caption"><?=GetMessage("GRAIN_FO_HEADER")?>:</span>
   <?if(in_array("NAME",$arParams["SHOW_FIELDS"])):?>
      <input type="text" name="user_name" placeholder="<?=GetMessage("GRAIN_FO_NAME")?>" value="<?=$arResult["AUTHOR_NAME"]?>" class="input-gray"/>
   <?endif?>
   <?if(in_array("EMAIL",$arParams["SHOW_FIELDS"])):?>
      <input type="text" name="user_email" placeholder="<?=GetMessage("GRAIN_FO_EMAIL")?>" value="<?=$arResult["AUTHOR_EMAIL"]?>" class="input-gray"/>
   <?endif?>
   <?if(in_array("PHONE",$arParams["SHOW_FIELDS"])):?>
      <input type="text" name="user_phone" placeholder="<?=GetMessage("GRAIN_FO_PHONE")?>" value="<?=$arResult["AUTHOR_PHONE"]?>" class="input-gray phone-input"/>
   <?endif?>

   <?if($arParams["USE_CAPTCHA"] == "Y"):?>
   <div class="grain-fo-captcha">
      <div class="grain-fo-text"><?=GetMessage("GRAIN_FO_CAPTCHA")?></div>
      <input type="hidden" name="captcha_sid" value="<?=$arResult["capCode"]?>">
      <img src="/bitrix/tools/captcha.php?captcha_sid=<?=$arResult["capCode"]?>" width="180" height="40" alt="CAPTCHA">
      <div class="grain-fo-text"><?=GetMessage("GRAIN_FO_CAPTCHA_CODE")?><span class="grain-fo-req">*</span></div>
      <input type="text" name="captcha_word" size="30" maxlength="50" value="">
   </div>
   <?endif;?>
   <input type="hidden" name="HASH" value="<?=$arResult["HASH"]?>">
   <input type="hidden" name="ajax_fastorder" value="Y">
   <input type="hidden" name="submit" value="Y">
      
   <input type="submit" value="<?=GetMessage("GRAIN_FO_SUBMIT")?>" class="btn btn-green">
</form>

<?

$().ready(function(){

   $(
"#grain_fast_order").submit(function(){ 
   
      $.
post($(this).attr("action"),$(this).serialize(),false,"json")

          .
done($.proxy(function(data) {

             if(
data.result=="success") {
          
                $(
"#grain_fast_order_success").html(data.message).show();
                $(
this).hide();
             
             } else if(
data.result=="error") {
             
                $(
"#grain_fast_order_error").html(data.message).show();
             
             }

          },
this))

          .
fail($.proxy(function(data) {

             
//alert("error");

          
},this));

      return 
false;

   });

});

 
michael kors outlet
coach outlet
polo ralph lauren
fred perry polo shirts
coach outlet
moncler jackets
clarks shoes
oakley sunglasses
polo shirts
oakley sunglasses wholesale
kate spade outlet
pandora jewelry
gucci outlet
canada goose jackets
pandora jewelry
canada goose jackets
rolex watches
adidas yeezy shoes
michael kors outlet
coach factory outlet
ray ban sunglasses
pandora outlet
valentino outlet
michael kors outlet
pandora charm
canada goose outlet
birkenstock shoes
oakley sunglasses
uggs canada
coach outlet
adidas nmd shoes
moncler outlet
polo ralph lauren
christian louboutin outlet
moncler outlet
canada goose outlet
ugg outlet
kate spade outlet
polo ralph lauren
cheap nfl jerseys
coach outlet
vibram fivefingers
giuseppe zanotti outlet
michael kors handbags
michael kors outlet
coach outlet
coach outlet online
mont blanc pens
uggs outlet
michael kors handbags
ray ban outlet
giuseppe zanotti outlet
coach outlet online
pandora outlet
nike shoes
cheap oakley sunglasses
coach outlet
coach outlet
ugg outlet
mbt shoes
canada goose outlet
ferragamo shoes
uggs outlet
kate spade outlet
coach outlet store online
michael kors outlet
nike outlet
nfl jerseys wholesale
michael kors outlet
christian louboutin outlet
ralph lauren shirts
asics running shoes
adidas outlet
pandora jewelry
pandora charms
kate spade outlet
polo outlet
true religion outlet
christian louboutin outlet
pandora outlet
canada goose jackets
ralph lauren outlet
pandora outlet
ugg boots
cheap ugg boots
fred perry polo shirts
coach outlet
polo ralph lauren
nfl jerseys wholesale
vans shoes
michael kors outlet clearance
canada goose outlet
cheap mlb jerseys
cheap ugg boots
nfl jerseys wholesale
moncler outlet
pandora jewelry
fitflops sale clearance
michael kors outlet
michael kors outlet
christian louboutin shoes
mcm outlet
coach factory outlet
michael kors outlet
canada goose
kate spade outlet
coach factory outlet
ralph lauren polo
canada goose jackets
polo outlet
michael kors outlet
coach outlet
polo outlet
nfl jerseys wholesale
michael kors handbags
coach outlet
true religion jeans
ugg outlet
air max 2017
ralph lauren outlet
polo ralph lauren
christian louboutin outlet
christian louboutin outletyaoxuemei20180811
Страницы: 1
Ответить
Читают тему (гостей: 1)
Форма ответов
Текст сообщения*
Загрузить файл или картинкуПеретащить с помощью Drag'n'drop
Перетащите файлы
Ничего не найдено
Загрузить картинки
Отправить Отменить