You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JS中让MySQL返回的'&'正常显示而非'&'?

解决HTML实体转义问题:将&转回&

嘿,这个问题我碰到过不少次——当后端返回的&被转义成HTML实体&后,直接用innerHTML取内容就会拿到这个转义后的字符串,导致前端显示出&而不是我们想要的&。别慌,给你两种靠谱的修复方法:

方法1:通用HTML实体解码(推荐)

这种方法能处理所有HTML实体(比如<、>这类),不止限于&。核心思路是借助DOM元素的textContent自动解码实体:

// 先封装一个解码工具函数,复用起来方便
function decodeHtmlEntities(str) {
  const tempDiv = document.createElement('div');
  tempDiv.innerHTML = str;
  return tempDiv.textContent;
}

// 修改你的原有代码,对on_off_sale的内容做解码处理
const licTypeElement = $('#'+curId+"-licType")[0];
const onOffSaleElement = $('#'+curId+"-on_off_sale")[0];

const licTypeText = licTypeElement.innerHTML;
// 关键步骤:解码on_off_sale里的HTML实体
const onOffSaleText = decodeHtmlEntities(onOffSaleElement.innerHTML);

$('#licClass').text(licTypeText.substring(0, 1) + "," + licTypeText + " (" + onOffSaleText +")");

方法2:直接正则替换(仅针对&场景)

如果你确定只有&被转义成&,没有其他实体需要处理,也可以直接用正则快速替换:

const licTypeElement = $('#'+curId+"-licType")[0];
const onOffSaleElement = $('#'+curId+"-on_off_sale")[0];

const licTypeText = licTypeElement.innerHTML;
// 全局替换所有&为&
const onOffSaleText = onOffSaleElement.innerHTML.replace(/&/g, '&');

$('#licClass').text(licTypeText.substring(0, 1) + "," + licTypeText + " (" + onOffSaleText +")");

为啥原代码会出问题?

因为innerHTML会直接返回DOM节点中存储的原始HTML字符串——如果后端返回的内容已经被转义成&,innerHTML就会原封不动地拿到这个字符串,而jQuery的text()方法会直接把它当普通文本输出,所以就显示成了&。经过解码后,就能得到我们想要的原始&字符啦。

内容的提问来源于stack exchange,提问作者Teddy Haile

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:27:38