那如果之前的方法不行,想传递json对象怎么办呢?

使用下面这种方法,

getA = function(){
var obj = {'projectId':123,'projectName':'aac'};
var objStr = JSON.stringify(obj);
console.info(objStr); var a = '<a href="javascript:void(0);" onclick="sendTcMail('+objStr+')">test</a>';
$('#test').html(a);
}

这里将json对象通过JSON.stringify(obj)方法转换成了json对象的字符串(其实就是obj外面加了双引号),就可以用在下面的a字符串中进行拼接,这样拼接出来,sendTcMail方法中就传递的是json对象,可是事实不如人意,浏览器渲染出来的并不是我们想要的效果,会发现引号错乱了,这是为什么呢?
原因就是:JSON.stringify(obj)方法转换的json字符串是通过双引号包裹的,虽然js单双引号都可以,但是在拼接a字符串时,最外层用的是单引号拼接的,所以拼接的objStr变量中也需要是用单引号包裹的;但是objStr变量是通过JSON.stringify(obj)方法来的,所以它并不是单引号就会出现拼接字符串引号不一致,导致浏览器解析html出来并不是我们想要的。

措施:将外层用双引号来拼接,修改如下:

getA = function(){
var obj = {'projectId':123,'projectName':'aac'};
var objStr = JSON.stringify(obj);
console.info(objStr); var a = "<a href='javascript:void(0);' onclick='sendTcMail("+objStr+")'>test</a>";
$('#test').html(a);
}

这样拼接就没问题了,最终拼接完之后objStr中的双引号会自动去掉的,所有组成的字符串a中,onclick方法sendTcMail中的参数传递的是json对象obj,并不是json字符串objStr。这点要清楚。
只要遇到拼接字符串,中间还有用到变量,那变量一定也要是字符串类型,如果是对象去直接拼接,就会是对象引用,不是我们要的对象内容,一定要注意。

最新文章

  1. C# Azure 消息队列ServiceBus (服务总线队列)
  2. 浅谈Java中的equals和==
  3. 对DIP IoC DI的理解与运用
  4. android 中resources管理
  5. git使用详细介绍
  6. Linux服务器管理: 系统的进程管理top命令
  7. atitit.元编程总结 o99
  8. jQuery mobile 前台设计中的css em的使用。
  9. PHP 网页爬虫
  10. yii生成webapp
  11. 【转】emulator: ERROR: Could not load OpenGLES emulation library: lib64OpenglRender.so
  12. 1254 Flip and Shift
  13. 手机端图像编辑上传-cropper
  14. python---数学表达式的分析树实现
  15. How do you explain Machine Learning and Data Mining to non Computer Science people?
  16. 把cnblogs变成简书 - cnblogs博客自定义皮肤css样式
  17. IDEA使用笔记(七)——编辑器最大个数的设置
  18. html select控件的jq操作
  19. python day 06 作业
  20. web漏洞详解及修复建议

热门文章

  1. android禁止横屏
  2. deviceToken的获取(二)
  3. IOS UI Frame 相对位置调整 与优化方法 Height Width X Y 调整
  4. Android TableLayout 表格布局
  5. VC2010编译时提示:转换到 COFF 期间失败: 文件无效或损坏
  6. python中返回函数
  7. redis配置参数的热修改
  8. unigui中TUniDBEdit的OnEndDrag问题
  9. MySQL 高可用架构在业务层面的应用分析
  10. delphi完美经典-第16章 Delphi数据库程序设计----使用BDE组件