EL表达式,向JS内传递参数遇到问题。
传递值类型,加上单引号就可以:
<a class="btn" href="javascript:test('${param.name}');" id="name">姓名</a>
想要传递对象(Map、List等),一直是空值,加上单引号,就是一个类名@hash值的一个字符串。
类名@hash值
很纠结,如何向JS内传递对象类型的EL表达式呢?不至于无法实现吧。
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
1.你传递对象最后要拿到对象里的某个值,可以直接采用获取参数的形式
<a class="btn" href="javascript:test('${map.name}','${map.age}');" id="name">姓名</a>
2.如果你非要传递对象的话,可以先把对象转成JSON字符串,然后在test方法中转成JSON
<a class="btn" href="javascript:test('${mapString}');" id="name">姓名</a> function test(str) { try { var obj = JSON.parse(str); //TODO } catch (e) { throw e; } }
3.使用第二种方式有风险,例如你的map中有用户输入的信息,包含引号就会出现HTML解析错误。一般这种情况我是这样处理的
<a class="btn" href="javascript:void(0)" id="name" data-name="${map.name}" data-age="${map.age}">姓名</a> $('#name').click(function () { var $this = $(this); var name = $this.data('name'); var age = $this.data('age'); //TODO }); 数据过多我会写个方法来获取数据 $('#name').click(function () { var $this = $(this); var data = seriData($this); //TODO }); function seriData(el) { return { name: el.data('name'), age: el.data('age'), grade: el.data('grade') } }
1.你传递对象最后要拿到对象里的某个值,可以直接采用获取参数的形式
2.如果你非要传递对象的话,可以先把对象转成JSON字符串,然后在test方法中转成JSON
3.使用第二种方式有风险,例如你的map中有用户输入的信息,包含引号就会出现HTML解析错误。一般这种情况我是这样处理的