<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给属性赋值,就可以包含双引号而不报错。特殊符号难题赋值

解决方案 »

  1.   

    估计你在使用中不会这样用吧?应该关心的是json获取数据是否正常?以后json也是从后台获取的,也不会放到input 的value里面.因为它的值就只能识别两个双引号之间,多个连接在一起根本不识别.
      

  2.   

    主要是有一大段json数据,想直接读取后端数据,放到前端处理。用ajax的话不是不行。。就是
    我写的是.net主要还是想知道这是什么原因,导致js赋值的json就有效。
      

  3.   

    调试时出现的双引号是json转字符串时自动出来的 是调试工具为了便于你查看而打印出来的
    直接在html里那么写双引号 浏览器解析的时候会失败~~~~
      

  4.   

    用js 变量缓存 json 对象不可以吗?
    为什么要赋值给 input
    可以考虑赋值前 替换 特殊字符串 
      

  5.   

    直接往value里面写的话,那是字符串。
    js赋值的话,赋给value的是json而不是字符串,你看到的双引号是json必需的一部分。
      

  6.   

    显示的是"" 但源码不一定是。。可能是&#34;
      

  7.   

    这个仅仅是显示问题而已。至于浏览器内部是如何存储的楼主又兴趣可以去研究一下。。var a ="adsfaf\"daf\""; 比如这个是你的JS
    然后你通过浏览器的firebug IEdevelop等去监听该参数就可以看到如下。
    a : "adsfaf"daf"";
    但是我们自己编写程序的时候必须加上转义字符