Передача динамического массива объектов php в JS

(Ответов: 4, Просмотров: 616)
  1. Новичок
    • Регистрация: 17.01.2017
    • Сообщений: 6
    • Репутация: 0
    Попросили доделать в bitrix страницу услуг которых около 200($elements). Решение выбрал "ленивой подгрузки". Реализацию выбрал isotope + infinite scroll. И получилось так что тяму не хватает как передать блок (элемент массива создаваемый скриптом php на лету:
    PHP код:
    <?php
    $file 
    fopen('dump.txt''w');
    $ElemHTML[]="";
    foreach (
    $elements as $arElement)
              {
    $res CIBlockElement::GetByID($arElement["PROPERTY_PRIMER"]);
    $primer $res->GetNext();
    if(!empty(
    $primer)) $codeid " ".$primer['CODE'];
    $arElementID=$arElement["ID"];
    $arElementSRC=$arElement["DETAIL_PIC"]["SRC"];
    $arElementNAME=$arElement["NAME"];
    $arElementSCR=$arElement["PREVIEW_PIC"]["src"];
    $arElementTEXT=$arElement["PREVIEW_TEXT"];
    array_push($ElemHTML,"<li id=\"$arElementID\" class=\"elems-item $codeid\"><a href=\"$arElementSRC\" rel=\"group\" class=\"fnbox\" title=\"$arElementNAME\"><img class=\"stretchRight backfon img elems-item-anim $arElementID\" alt=\"$arElementNAME\" src=\"$arElementSCR\" /></a><div><div>$arElementNAME</div><div>$arElementTEXT</div></div></li>");
    }
    //foreach ($elements as $arElement)... 
    array_shift($ElemHTML);   
    $result=implode(',',$ElemHTML);
    fwrite($file,$result); 
    fclose($file); 
           
    ?>
    в JS с учетом конечно же того что вначале должен выполняться JS над готовым массивом ( а ведь он еще не создан средствами php).
    Последний раз редактировалось Fezas; 24.01.2017 в 12:52.
    • 0
  2. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    Вначале js, а потом php на одной странице так не получится. Есть вариант по аяксу данные подтянуть разве что.
    • 0
  3. Новичок
    • Регистрация: 17.01.2017
    • Сообщений: 6
    • Репутация: 0
    Исправил
    PHP код:
    <?php
    header
    ('Content-Type: application/x-javascript; charset=utf8'); 
    $ElemHTML=array();
    foreach (
    $elements as $arElement)
    {
        
    $res CIBlockElement::GetByID($arElement["PROPERTY_PRIMER"]);
        
    $primer $res->GetNext();
        if(!empty(
    $primer)) $codeid " ".$primer['CODE'];
        
    $arElementID=$arElement["ID"];
        
    $arElementSRC=$arElement["DETAIL_PIC"]["SRC"];
        
    $arElementNAME=$arElement["NAME"];
        
    $arElementSCR=$arElement["PREVIEW_PIC"]["src"];
        
    $arElementTEXT=$arElement["PREVIEW_TEXT"];
        
    $Block='<li id='.$arElementID.' class="elems-item '.$codeid.'><a href="'.$arElementSRC.' rel="group" class="fnbox" title="'.$arElementNAME.'"><img class="stretchRight backfon img elems-item-anim '.$arElementID.'" alt="'.$arElementNAME.'" src="'.$arElementSCR.'" /></a><div><div>'.$arElementNAME.'</div><div>'.$arElementTEXT.'</div></div></li>';
        
    array_push($ElemHTML,$Block);
        
    }
    //foreach ($elements as $arElement)... 
    $Elem json_encode($ElemHTML);
    $result=implode(',' ,$ElemHTML);
    $file fopen('dump.txt''w');
    fwrite($file,$result);  
    fclose($file); 
    ?>
    JS
    PHP код:
    var name = <? echo $Elem;?>;
    Дает var name = [null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null];

    Что не так не пойму... в дампе весь массив в порядке...
    • 0
  4. Новичок
    • Регистрация: 17.01.2017
    • Сообщений: 6
    • Репутация: 0
    Проблема в переменной .$arElementNAME.
    Она принимает значение типа "продукт "марка""
    Тут в кавычках видимо дело...
    • 0
  5. Новичок
    • Регистрация: 17.01.2017
    • Сообщений: 6
    • Репутация: 0
    addslashes ($arElementNAME); не помог
    addcslashes($arElementNAME,'"'); не помог
    • 0

Похожие темы

Темы Раздел Ответов Последний пост
Повышаем конверсию за счет динамического контента
Дайджест блогосферы 0 03.08.2015 17:08
Плагин объектов на карте
WordPress 3 11.03.2014 03:30
Сервис динамического размещения блоков рекламы
Оффтоп и свободные темы 2 24.02.2014 20:29
API Яндекс карты Поиск объектов
Поисковые системы 1 06.04.2013 23:39
Изменение размера флеш объектов
Web программирование 2 18.02.2013 18:45

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры