关于给input的属性绑定json数据的奇怪现象
<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给属性赋值,就可以包含双引号而不报错。
------解决方案--------------------直接往value里面写的话,那是字符串。
js赋值的话,赋给value的是json而不是字符串,你看到的双引号是json必需的一部分。
------解决方案--------------------这个仅仅是显示问题而已。至于浏览器内部是如何存储的楼主又兴趣可以去研究一下。。
var a ="adsfaf\"daf\""; 比如这个是你的JS
然后你通过浏览器的firebug IEdevelop等去监听该参数就可以看到如下。
a : "adsfaf"daf"";
但是我们自己编写程序的时候必须加上转义字符