Проблема в следующем: создаю массив строк. Строки формируются из различных переменных. А вот при передаче переменной $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>
передача переменной содержащей двойные кавычки из php в JS
(Ответов: 2, Просмотров: 725)
- 30.01.2017 11:21
- Регистрация: 17.01.2017
- Сообщений: 6
- Репутация: 0
Последний раз редактировалось Fezas; 30.01.2017 в 11:27.
- 30.01.2017 13:12
И не поможет. Получается невалидная строка хтмл
PHP код:Заменяйте кавычки на спецсимвол " или меняйте логику скрипта.$arElementID = 'text"text';
<li id="'.$arElementID.'"
- 30.01.2017 16:37
- Регистрация: 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("\"",""",$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 код:Не передаются в массив начения $arElementNAME cодержащие кириллицу<script>
var JSElemHTML = <?php echo json_encode($ElemHTML, JSON_UNESCAPED_UNICODE);?>;
JSElemHTML.forEach(function(entry) {
console.log(entry);
});
</script>
---------- Сообщение добавлено 22:37 ---------- Предыдущее 21:52 ----------
Можно закрыть тему.
Во первых кодировка сайта cp1251, а json_encode без оберток только с utf-8
а во вторых задача была для bitrix и там есть обертка encode
PHP код:var JSElemHTML = <?php echo \Bitrix\Main\Web\Json::encode($ElemHTML, $options = null);?>;
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Работа с 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 |