关于给input的属性绑定json数据的奇怪现象

gaosam 2013-11-06 09:35:05

<script>

$(function () {
var data = [{ id: 1, name: 'kd1' }, { id: 2, name: 'kd2' }, { id: 3, name: 'kd3' }, { id: 4, name: 'kd4' }];
var json = $.toJSON(data);
$('#hdKD').val(json);

alert($('#hdKD').val());
});

</script>

<input id="hdKD" type="hidden"/>



按F12看调试,可以看到

而且alert的结果也和预计的一样。
但是奇怪的是,按道理,value后面红线部分,应该出错的,因为双引号的问题。实际value应该是="[{"

尝试直接把json写到value里,可以看到,IDE直接提示有错误。

并且这样alert的结果,也是错误的。



究竟这个是什么原因,导致js给属性赋值,就可以包含双引号而不报错。
...全文
1181 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
帅气皮夹克 2015-05-27
  • 打赏
  • 举报
回复
直接用value获取值时 用单引号value=‘值‘
阿鱼 2013-11-07
  • 打赏
  • 举报
回复
直接往value里面写的话,那是字符串。 js赋值的话,赋给value的是json而不是字符串,你看到的双引号是json必需的一部分。
hch126163 2013-11-07
  • 打赏
  • 举报
回复
用js 变量缓存 json 对象不可以吗? 为什么要赋值给 input 可以考虑赋值前 替换 特殊字符串
liuxinran819 2013-11-07
  • 打赏
  • 举报
回复
调试时出现的双引号是json转字符串时自动出来的 是调试工具为了便于你查看而打印出来的 直接在html里那么写双引号 浏览器解析的时候会失败~~~~
yibey 2013-11-07
  • 打赏
  • 举报
回复
这个仅仅是显示问题而已。至于浏览器内部是如何存储的楼主又兴趣可以去研究一下。。

var a ="adsfaf\"daf\""; 比如这个是你的JS
然后你通过浏览器的firebug IEdevelop等去监听该参数就可以看到如下。
a : "adsfaf"daf"";
但是我们自己编写程序的时候必须加上转义字符
凉粉zzz 2013-11-07
  • 打赏
  • 举报
回复
显示的是"" 但源码不一定是。。可能是"
Deep_Learning 2013-11-06
  • 打赏
  • 举报
回复
这样应该是不行,如果你不是赋值,而是写死的,双引号也得转义啊,赋值之后没法转义。肯定报错
kiddkyd 2013-11-06
  • 打赏
  • 举报
回复
主要是有一大段json数据,想直接读取后端数据,放到前端处理。用ajax的话。。。不是不行。。就是。。。 我写的是.net 主要还是想知道这是什么原因,导致js赋值的json就有效。
Andy__Huang 2013-11-06
  • 打赏
  • 举报
回复
估计你在使用中不会这样用吧? 应该关心的是json获取数据是否正常?以后json也是从后台获取的,也不会放到input 的value里面.因为它的值就只能识别两个双引号之间,多个连接在一起根本不识别.

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧