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

使用jQuery解析JSON生成HTML a标签异常问题求助

修复jQuery渲染JSON链接时的a标签异常问题

我来帮你排查这个问题啦!你遇到的部分a标签内容跑到标签外部的情况,根本原因是拼接HTML字符串时没有给href属性值加上引号——当JSON里的URL包含空格、&这类特殊字符时,浏览器会把这些字符后面的内容当成新的HTML属性或文本,直接打乱了标签的解析结构,自然就出现异常了。

举个简单例子:如果URL是http://example.com/news item?id=1,没加引号的话,浏览器会把href=http://example.com/news当成一个独立属性,item?id=1就会被识别成标签外的文本,最终导致显示错乱。

修正方案一:给href加上引号

直接修改你原有的字符串拼接代码,给href的属性值加上转义的双引号即可:

<script>
$.ajax({
  url: 'http://cybersecurity.apievangelist.com/apis/news/',
  type: 'GET' // 这个是默认值,标注出来也没问题
}).done(function(data){
  var objone = JSON.parse(data);
  for (i in objone) {
    // 重点:给href的值加上双引号,用转义符\"处理特殊字符
    $('#myContent').append("<div class='well'><a href=\"" + objone[i].url + "\">" + objone[i].title +"</a><br /></div>");
  }
});
</script>
<div class="container" id="myContent">
</div>

修正方案二:用jQuery创建元素(更推荐)

字符串拼接HTML不仅容易遇到解析问题,还存在XSS安全风险。更稳妥的方式是用jQuery的API直接创建DOM元素,它会自动处理特殊字符转义:

<script>
$.ajax({
  url: 'http://cybersecurity.apievangelist.com/apis/news/',
  type: 'GET'
}).done(function(data){
  var objone = JSON.parse(data);
  // 用$.each遍历更安全,避免for...in遍历到原型链上的冗余属性
  $.each(objone, function(index, item) {
    // 创建well容器
    var wellDiv = $('<div>').addClass('well');
    // 创建a标签,直接设置href和文本内容
    var newsLink = $('<a>').attr('href', item.url).text(item.title);
    // 把链接添加到容器,再插入到页面目标区域
    wellDiv.append(newsLink).append('<br>');
    $('#myContent').append(wellDiv);
  });
});
</script>
<div class="container" id="myContent">
</div>

这种方式不仅能彻底解决当前的标签解析问题,代码的可读性、安全性和后续维护性也更高哦~

内容的提问来源于stack exchange,提问作者Ssravankumar Aditya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:51:19