Heim > Fragen und Antworten > Hauptteil
EL表达式,向JS内传递参数遇到问题。
传递值类型,加上单引号就可以:
<a class="btn" href="javascript:test('${param.name}');" id="name">姓名</a>
想要传递对象(Map、List等),一直是空值,加上单引号,就是一个类名@hash值
的一个字符串。
很纠结,如何向JS内传递对象类型的EL表达式呢?不至于无法实现吧。
黄舟2017-04-10 16:03:51
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')
}
}