【问题标题】:json_encode adds double quotes instead of spacesjson_encode 添加双引号而不是空格
【发布时间】:2016-07-07 15:11:20
【问题描述】:

我正在尝试解决从 mysql 读取数据并通过 php 将它们传递到我的页面的问题。 我的任务是将从mysql读取的数据直接插入到一个js函数中。 代码是:

while($row = $query_ope->fetch_assoc()){
  $data = array("str_id" => $row['Id'],
                "str_rag_sociale" => $row['Rag_Sociale'],
                "str_indirizzo" => $row['Indirizzo'],
                "att_luogo" => json_decode($row['Comune']),
                "str_cap" => $row['Cap'],
                "str_reparto" => $row['Reparto']
                );
  $content .= '<tr class="cal_body">'.
                <td class="btn_icon icon icon-setup" onclick=modUt('.json_encode($data).')></td>'.
              '</tr>';

现在的问题是 db 字段中包含空格的数据(例如,当 $row['Comune'] = "some text" 时)被解析如下:

onclick=modUt({...,"att_luogo" : "some" text","str_cap"....})

在第一个单词之后加上双引号,这是一个问题,因为我的 js 函数失败了。 我正在疯狂地试图理解为什么。

【问题讨论】:

  • 如果 Comune 是 some text,你为什么要在上面运行 json_decode()
  • 看代码高亮。你错过了'
  • AJAX 可能会更简单
  • @Devon:我正在使用 json_encode 将数据从 PHP 传递到 JS @RiggsFolly:你说的单引号不见了,我错误地没有把它放在我的消息代码中,但里面有我的真实代码。无论如何,AJAX 会更好,你是对的。

标签: php mysql json double-quotes


【解决方案1】:

你必须对你的 html 属性进行 html 编码

$content .= '<tr class="cal_body"> 
            <td class="btn_icon icon icon-setup" onclick="'.htmlspecialchars('modUt('.json_encode($data).')').'"></td>'.
          '</tr>';

【讨论】:

  • 嗨,谢谢你,真的。我按照你的推荐试过了,效果很好!我明白了什么是我的错。你认为我是从 db 读取数据的正确方法,还是我应该编写更好编码的数据,然后在没有特殊功能(如 htmlspecialchars)的情况下读取它们?再见
  • 我认为在数据库中对数据进行编码并不是一个好主意,在需要编码的时间和地点进行编码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-19
  • 2019-02-15
  • 1970-01-01
相关资源
最近更新 更多