передача переменной содержащей двойные кавычки из php в JS

(Ответов: 2, Просмотров: 533)
  1. Новичок
    • Регистрация: 17.01.2017
    • Сообщений: 6
    • Репутация: 0
    Проблема в следующем: создаю массив строк. Строки формируются из различных переменных. А вот при передаче переменной $arElementNAME (Она принимает значение типа "продукт "марка"") я в JS получаю null. То есть при наличии в строке неэкранированной кавычки json_encode некорректно работает
    addslashes ($arElementNAME); не помог
    addcslashes($arElementNAME,'"'); не помог
    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" alt="'.$arElementNAME.'" src="'.$arElementSCR.'" /></a><div><div>'.$arElementNAME.'</div><div>'.$arElementTEXT.'</div></div></li>';
        
    array_push($ElemHTML,$Block);
        
    }
    //foreach ($elements as $arElement)... 
    ?>
    <script>
    var name = <? echo json_encode($ElemHTML);?>;
    </script>
    Последний раз редактировалось Fezas; 30.01.2017 в 11:27.
    • 0
  2. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,932
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    И не поможет. Получается невалидная строка хтмл
    PHP код:
    $arElementID 'text"text';
    <
    li id="'.$arElementID.'" 
    Заменяйте кавычки на спецсимвол &quot; или меняйте логику скрипта.
    • 0
  3. Новичок
    • Регистрация: 17.01.2017
    • Сообщений: 6
    • Репутация: 0
    brainix,
    PHP код:
    $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=str_replace("\"","&quot;",$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" alt="'.$arElementNAME.'" src="'.$arElementSCR.'" /></a><div><div>'.$arElementNAME.'</div><div>'.$arElementTEXT.'</div></div></li>';
        
    array_push($ElemHTML,$Block);
    }
    //foreach ($elements as $arElement)... 

    ?> 
    PHP код:
    <script>
    var JSElemHTML = <?php echo json_encode($ElemHTMLJSON_UNESCAPED_UNICODE);?>;
    JSElemHTML.forEach(function(entry) {
        console.log(entry);
    });

    </script>
    Не передаются в массив начения $arElementNAME cодержащие кириллицу

    ---------- Сообщение добавлено 22:37 ---------- Предыдущее 21:52 ----------

    Можно закрыть тему.
    Во первых кодировка сайта cp1251, а json_encode без оберток только с utf-8
    а во вторых задача была для bitrix и там есть обертка encode


    PHP код:
    var JSElemHTML = <?php echo \Bitrix\Main\Web\Json::encode($ElemHTML$options null);?>;
    • 0

Похожие темы

Темы Раздел Ответов Последний пост
Работа с json и выборка по переменной
Web программирование 1 18.11.2014 16:24
Французские кавычки, машинописные двойные кавычки
Вопросы от новичков 4 08.08.2014 09:55
передача информации через форму. Проблема в передаче переменной
Web программирование 2 01.12.2012 12:26
Влияют ли кавычки в ключевых словах на продвижение?
Вопросы от новичков 6 03.02.2012 03:16
кавычки в титле и дискрипшине хорошо или плохо?
Вопросы от новичков 8 06.01.2012 18:34

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

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

Информеры