首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON数组在HTML选择中作为值

JSON数组在HTML选择中作为值
EN

Stack Overflow用户
提问于 2015-01-23 15:52:47
回答 3查看 1.1K关注 0票数 0

我正在开发一个使用PHP的网站,它可以自动在海报上创建。用户可以选择在php文件中定义的颜色主题,如下所示:

代码语言:javascript
复制
$f_1 =array(
    "1" => "#1e354c ",
    "2" => "#ebcc85",
    "3" => "#133745"
    );
$f_3 =array(
    "1" => "#1e354c",
    "2" => "#b5cd9c",
    "3" => "#133745"
    );

$themes = array(
          "Tema 1"        => json_encode($f_1),

          "Tema 2"          => json_encode($f_3)
          );

echo "<select class='form-control' id='themeselect' onchange='updatePoster()'>";
foreach($themes as $cc => $name) {  
    echo '<option value="' . $name . '">' . $cc . '</option>';    
}
echo "</select>";

$f_1的JSON生态化是这样的;

代码语言:javascript
复制
"{\"1\":\"#1e354c \",\"2\":\"#ebcc85\",\"3\":\"#133745\"}"

问题是"Tema 1“的值是"{”。

我也尝试使用serialize()而不是json_encode(),但这也不起作用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-23 15:59:35

"在由"字符分隔的属性值中具有特殊意义。

在插入HTML文档之前,使用htmlspecialchars()将非HTML数据转换为HTML。

代码语言:javascript
复制
foreach($themes as $cc => $name) {  
?>
    <option
        value="<?php echo htmlspecialchars($name); ?>">
        <?php echo htmlspecialchars($cc); ?>
    </option>
<?php
}
?>
票数 2
EN

Stack Overflow用户

发布于 2015-01-23 15:59:16

json_encode返回一个字符串。作为一名开发人员,正确使用它是您的工作。虽然\"是在PHP中用双引号转义双引号的正确方法,但对于HTML,情况并非如此。&quot;是。

因此,我打赌生成的HTML如下所示:

代码语言:javascript
复制
<select  ...>
    <option value="{"1":...>Tema1</option>
</select>

注意为什么updatePoster告诉您所选的值是"1"

票数 1
EN

Stack Overflow用户

发布于 2015-01-28 21:18:51

您还可以更改这个echo语句:

代码语言:javascript
复制
echo '<option value="' . $name . '">' . $cc . '</option>';

代码语言:javascript
复制
echo "<option value='$name'>$cc</option>";

因此,该值由单引号而不是双引号分隔。这也能解决你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28113673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档