日期:2014-05-16  浏览次数:20437 次

关于给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"";
但是我们自己编写程序的时候必须加上转义字符