$SQL = "SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'mst_sim_data'
AND COLUMN_NAME = 'status'";
$result = mysql_query($SQL);
$row = mysql_fetch_array($result);
$enumList = explode(",", str_replace("'", '', substr($row['COLUMN_TYPE'], 5, (strlen($row['COLUMN_TYPE'])-6))));
foreach ($enumList as $key => $value) {
$list["'$value'"] = $value;
}
return json_encode($list);
返回以下json字符串。
Object {'INSTOCK': "INSTOCK", 'ISSUED': "ISSUED", 'SOLDOUT': "SOLDOUT"}
但我需要用双引号替换单引号,它应该是这样的,
'INSTOCK': 'INSTOCK', 'ISSUED': 'ISSUED', 'SOLDOUT': 'SOLDOUT'}
我该怎么做?
答案 0 :(得分:2)
目标是打破JSON输出吗? JSON字符串和属性必须使用"
作为引用。
我认为问题是双重的
$list["'$value'"] = $value;
应为$list["$value"] = $value;
和
"
应单独左
如果你做希望破坏引号(这意味着结果是不是 JSON),那么使用 的结果
str_replace('"', "'", json_encode($list, JSON_HEX_APOS))
请注意JSON_HEX_APOS标志,以防止此严重黑客破坏任何嵌入'
字符串的JSON字符串。
答案 1 :(得分:0)
$SQL = "SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'mst_sim_data'
AND COLUMN_NAME = 'status'";
$result = mysql_query($SQL);
$row = mysql_fetch_array($result);
$enumList = explode(",", str_replace("'", '', substr($row['COLUMN_TYPE'], 5, (strlen($row['COLUMN_TYPE'])-6))));
foreach ($enumList as $key => $value) {
$list["$value"] = $value;
}
return str_replace('"',"'",json_encode($list));
然后在js上我再次编码数组
<?php
$this->load->module('sim/sim');
$enumList = $this->sim->status_enum_dropdown();
?>
<script type="text/javascript">
var enumList = <?php echo json_encode($enumList); ?>;
</script>
现在它按预期工作。