- 浏览: 908512 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (322)
- Hibernate研究&源码 (27)
- Server (10)
- Coder碎语 (64)
- EnglishMulling (11)
- About XML (1)
- persistence (12)
- Core Java & OO (23)
- Java EE (6)
- JavaScript/JSON/Ajax/ext... (22)
- 我的读书笔记 (16)
- Source Codes Study (29)
- workFlow/jBPM (22)
- OFBiz: Open For Business (1)
- 项目积累 (21)
- srcStudy_acegi (1)
- Cache/Ehcache... (9)
- Java Test/JUnit.. (7)
- maven/ant (2)
- 设计模式 (1)
- SOA/cxf/ws-security (2)
- Android (4)
- 云计算/Hadoop (2)
- 加密/签名 (1)
- 正则表达式 (1)
- htmlparser (1)
- 操作系统 (5)
- DB (1)
最新评论
-
天使建站:
这里这篇文章更详细 还有完整的实例演示:js跳出循环 ...
jQuery中each的break和continue -
heshifk:
刚刚我也遇到同样的问题,然后就在纠结为什么不能直接使用brea ...
jQuery中each的break和continue -
masuweng:
不错写的.
集万千宠爱于一身的SessionImpl:get研究(四): Hibernate源码研究碎得(8) -
muzi131313:
这个老是忘,做一下笔记还是挺好的
jQuery中each的break和continue -
lg068:
data = data.replace("\n&qu ...
项目小经验: eval与回车符
在使用JSON时的一点麻烦事.
问题的是这样的,当用JSON传回数据在HTML上用时总有双(单)引号的问题,即把JSON里的数据赋给HTML里某一元素的value属性时JSON值里的双(单)引号与HTML本身的引号就混在一起了.鼓捣了半天也没搞定,真是郁闷.
下面是一个简化的例子.
<html>
<script Language="javascript">
//这个menuList是利用JSON从Java端传回的数据.
var menulist = {"MenuList":
[{"cMenuText":"Valentine's Day test","cMenuTypeID":1},
{"cMenuText":"User Request","cContentTypeID":8}]
};
</script>
<ul>
<script Language="javascript">
var strCheckBox;
for( i=0; i<menulist.MenuList.length; i++ ){
var menuWrapper = menulist.MenuList[i];
document.write("<li class='treeItem' id='db_cartridgeID_contentTypeID'>");
strCheckBox = "<input type='checkbox' value='' >"; // ..............(1)
document.write(strCheckBox+"</li>");
}
</script>
</ul>
</html>
麻烦事就是(1)处value的赋值.本来是想把menuList里的"cMenuText"和"cMenuTypeID"的值拼成一个字符串放到这里的,可拼的过程中总有引号出错的问题.
下面是我试过的几种途径:
1,直接在(1)处把menulist中相应数据拼出来.
即:value = 'menuWrapper.cMenuText+menuWrapper.cMenuTypeID'
这样处理后,用firebug看结果如下:
<li id="db_cartridgeID_contentTypeID" class="treeItem">
<input type="checkbox" value="menuWrapper.cMenuText+menuWrapper.cMenuTypeID"/>
</li>
这显然不对,浏览器根本就没有解析menuWrapper.cMenuText而直接把它当字符串放在这里.
2,在(1)处拼串时去掉单引号,即:
value = menuWrapper.cMenuText+menuWrapper.cMenuTypeID
结果与上面的一样:
<li id="db_cartridgeID_contentTypeID" class="treeItem">
<input type="checkbox" value="menuWrapper.cMenuText+menuWrapper.cMenuTypeID"/>
</li>
3,把(1)处的整个一句改为:
strCheckBox = "<input type='checkbox' value = "+menuWrapper.cMenuText+menuWrapper.cMenuTypeID + "/>";
这样比上面的两个好些,结果如下:
<li id="db_cartridgeID_contentTypeID" class="treeItem">
<input type="checkbox" test1="" day="" value="Valentine's"/>
</li>
到这里问题引出来了,也就是menuWrapper.cMenuText的值,也就是"Valentine's Day test"在浏览器里被拆开了,而这个拆的过程是以空格和单引号为delimitor,这样与HTML自身的单引号或空格就混了从而造成了HTML里有了test1和day这样的属性.
.............................
写到这里也渐渐清晰了,这个问题实际上与JSON一点关系都没有,问题的根本在于用JavaScript操作HTML时单(双)引号的问题.
问题的是这样的,当用JSON传回数据在HTML上用时总有双(单)引号的问题,即把JSON里的数据赋给HTML里某一元素的value属性时JSON值里的双(单)引号与HTML本身的引号就混在一起了.鼓捣了半天也没搞定,真是郁闷.
下面是一个简化的例子.
<html>
<script Language="javascript">
//这个menuList是利用JSON从Java端传回的数据.
var menulist = {"MenuList":
[{"cMenuText":"Valentine's Day test","cMenuTypeID":1},
{"cMenuText":"User Request","cContentTypeID":8}]
};
</script>
<ul>
<script Language="javascript">
var strCheckBox;
for( i=0; i<menulist.MenuList.length; i++ ){
var menuWrapper = menulist.MenuList[i];
document.write("<li class='treeItem' id='db_cartridgeID_contentTypeID'>");
strCheckBox = "<input type='checkbox' value='' >"; // ..............(1)
document.write(strCheckBox+"</li>");
}
</script>
</ul>
</html>
麻烦事就是(1)处value的赋值.本来是想把menuList里的"cMenuText"和"cMenuTypeID"的值拼成一个字符串放到这里的,可拼的过程中总有引号出错的问题.
下面是我试过的几种途径:
1,直接在(1)处把menulist中相应数据拼出来.
即:value = 'menuWrapper.cMenuText+menuWrapper.cMenuTypeID'
这样处理后,用firebug看结果如下:
<li id="db_cartridgeID_contentTypeID" class="treeItem">
<input type="checkbox" value="menuWrapper.cMenuText+menuWrapper.cMenuTypeID"/>
</li>
这显然不对,浏览器根本就没有解析menuWrapper.cMenuText而直接把它当字符串放在这里.
2,在(1)处拼串时去掉单引号,即:
value = menuWrapper.cMenuText+menuWrapper.cMenuTypeID
结果与上面的一样:
<li id="db_cartridgeID_contentTypeID" class="treeItem">
<input type="checkbox" value="menuWrapper.cMenuText+menuWrapper.cMenuTypeID"/>
</li>
3,把(1)处的整个一句改为:
strCheckBox = "<input type='checkbox' value = "+menuWrapper.cMenuText+menuWrapper.cMenuTypeID + "/>";
这样比上面的两个好些,结果如下:
<li id="db_cartridgeID_contentTypeID" class="treeItem">
<input type="checkbox" test1="" day="" value="Valentine's"/>
</li>
到这里问题引出来了,也就是menuWrapper.cMenuText的值,也就是"Valentine's Day test"在浏览器里被拆开了,而这个拆的过程是以空格和单引号为delimitor,这样与HTML自身的单引号或空格就混了从而造成了HTML里有了test1和day这样的属性.
.............................
写到这里也渐渐清晰了,这个问题实际上与JSON一点关系都没有,问题的根本在于用JavaScript操作HTML时单(双)引号的问题.
评论
4 楼
wangyu
2009-02-20
请问你的单(双)引号的问题怎么解决的呢? 我今天也遇到这个问题,能不能交流一下.
3 楼
rmn190
2008-03-27
myData = JSON.parse(text, function (key, value) {
return key.indexOf('date') >= 0 ? new Date(value) : value;
});
完全可以利用这个function来将引号进行转义处理嘛.
http://www.json.org/js.html
return key.indexOf('date') >= 0 ? new Date(value) : value;
});
完全可以利用这个function来将引号进行转义处理嘛.
http://www.json.org/js.html
2 楼
rmn190
2008-03-27
A string is a collection of zero or more Unicode characters, wrapped in double quotes, using backslash escapes(http://www.json.org/):
这里提到了"using backslash escapes",这样那个单双引号问题就可以解决了.
前一步想,是不是在JSON的各种语言支持里是否有这种自动转义的处理method呢?
这里提到了"using backslash escapes",这样那个单双引号问题就可以解决了.
前一步想,是不是在JSON的各种语言支持里是否有这种自动转义的处理method呢?
1 楼
rmn190
2008-03-27
var item = "<li><img src='../images/bullet_toggle_plus.png' width='18' height='18' class='expandImage' /><img class=folderImage src='../images/folder.png' /><span class='textHolder'>"+newNodeName+ "</span>"+ "<input type='checkbox' id = "+newNodeName+"_"+ "_box_menu class='categoryNodeSelector' value='"+ nodeValue +"'/>"+ newNodeOrder + " : " + newNodeStartDate + " - " + treatedNodeEndDate +"</li>"; var branches = $(item).appendTo("#cartridge");
发表评论
-
利用jQuery来反选Select
2010-11-01 14:36 3656以这样的代码为例, <selec ... -
jQuery中each的break和continue
2010-10-22 15:54 30621each实质上是一个for循环,那么能不能像 ... -
套在一个Table中的Div不能隐藏
2010-10-13 17:59 3883直接用图说话: 操作前: 操作 ... -
previousElementSibling还是previousSibling?
2010-09-10 17:54 6956FireFox(版本号:3.5.11)中不支持Ja ... -
隐藏Table中套的Table
2010-09-10 17:10 1224如图所示: 点了红框中的加号后,变成: 也 ... -
自己实现Table增加Row时的几个心得记录
2010-09-10 16:42 1438自己用jQuery搞了个Table增加Row的东东 ... -
由实现JavaScript中的Map想到的
2010-09-10 16:13 1480项目中要用到JavaScr ... -
jQuery跟prototype关于“$”的冲突解决总结
2010-07-21 09:01 1303问题描述: jQuery跟其它的JavaScri ... -
JavaScript与displayTag标签的合作 -- 操作表头(二)
2009-12-10 16:46 1525这一版是对JavaScript与displayTag标签的合作 ... -
用JavaScript操作displayTag表头操作
2009-03-22 09:13 2534直接了当一些, displayTag有个缺点:用它生 ... -
JSP中Radio button使用时的一点经验
2008-12-18 21:03 4750就一张图片,图片上包含了所有信息: -
JavaScript与displayTag标签的合作 -- 操作表头(续)
2008-10-24 12:21 1663上一篇里写了定位到目标表头与onmouseover的 ... -
JavaScript与displayTag标签的合作 -- 操作表头.
2008-10-23 19:04 3959这段时间在用displayTag, 它有很多好 ... -
自写的一个JavaScript小小工具
2008-07-18 10:03 1785由于项目需要,写了一个JavaScript的工具,专门来 ... -
对浏览器中的context menu的认识.
2008-06-22 18:02 2261对浏览器中的context menu的认识. 一 ... -
与JSON的第一次亲密接触
2008-06-21 14:58 6756字符串型的Date转化为JavaBean的问题终于解决了 ... -
用json时的一个问题
2008-06-19 14:11 9186假设有一个Person类, public class P ... -
JavaScript中实现工厂模式.
2008-06-17 08:42 3234JavaScript中实现工厂模式. 第一次亲 ... -
JSON,Ajax,Spring组合使用时的一个问题.
2008-03-27 13:32 3098工作中用到JSON,可当它与Ajax结合使用时有一个槛过不去了 ... -
You Used JavaScript to Write WHAT?
2008-03-26 10:47 1402You Used JavaScript to Write WH ...
相关推荐
Java中使用Json的net.sf.json包,其中包含JSONObject与JSONArray等操作类,十分好用。
赠送jar包:android-json-0.0.20131108.vaadin1.jar; 赠送原API文档:android-json-0.0.20131108.vaadin1-javadoc.jar; 赠送源代码:android-json-0.0.20131108.vaadin1-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:android-json-0.0.20131108.vaadin1.jar; 赠送原API文档:android-json-0.0.20131108.vaadin1-javadoc.jar; 赠送源代码:android-json-0.0.20131108.vaadin1-sources.jar; 赠送Maven依赖信息文件:...
jquery和struts2结合使用的jar包
json-c-0.12.1.tar.gz,json-c库离线安装包
JSON net.sf.json 依赖的jar包 亲测可用 一次导入所有jar包
jquery.json-2.3.min.js和jquery.json-2.3.js jQuery为开发插件提拱了两个方法,分别是:jQuery.extend(object); 为扩展jQuery类本身 jQuery.fn.extend(object);给jQuery对象添加方法。
json-smart-2.3.jar
开源最新的json 库文件。json-lib-2.4-jdk15, fastjson-1.2.2
C#解析json的Newtonsoft.Json.dll各种.net版本 .net2.0 .net3.5 .net4.0 .net4.5
cycle.js: This file contains two functions, JSON.decycle and JSON.retrocycle, which make it possible to encode cyclical structures and dags in JSON, and to then recover them. JSONPath is used to ...
See http://www.JSON.org/ The files in this package implement JSON encoders/decoders in Java. It also includes the capability to convert between JSON and XML, HTTP headers, Cookies, and CDL. This is a...
在官网上一直下载不下来 然后共享在这 jquery.json-2.3.min.js和jquery.json-2.3.js
我用的WebApi, 开发,调试环境搭建好之后,遇到JSON序列化及反序列化的问题(用的Newtonsoft.Json.Compact.dll), 刚开始简单序列化数据传入到服务端没有什么问题,但当遇到List这种情况时一直报错(不支持 Open ...
JSON-lib包json-lib-0.8.jar和json-lib-0.9.jar包
json.js json.js json.js json.js json.js json.js json.js json.js json.js json.js json.js json.js json.js json.js json.js json.js json.js
用labelme标注图片的时候只能进行一张图片的转换,将此代码放入E:\anaconda\Lib\site-packages\labelme\cli(conda安装目录下labelme的文件夹)替换掉原始的json_to_dataset.py 在想要得到转换后文件的文件夹中打开...
java中使用JSON封装需要的json_simple jar包
有个哥们10分要,我就看不惯了,2分要的拿去,本来想免费的结果最少要2分不好意思了各位
com.force.json v1.2.2 json 解析神器 ..................