Heim  >  Fragen und Antworten  >  Hauptteil

javascript - EL表达式向 JS 函数传值

EL表达式,向JS内传递参数遇到问题。

传递值类型,加上单引号就可以:

<a class="btn" href="javascript:test('${param.name}');" id="name">姓名</a>

想要传递对象(Map、List等),一直是空值,加上单引号,就是一个类名@hash值的一个字符串。

很纠结,如何向JS内传递对象类型的EL表达式呢?不至于无法实现吧。

高洛峰高洛峰2769 Tage vor613

Antworte allen(1)Ich werde antworten

  • 黄舟

    黄舟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')
            }
        }

    Antwort
    0
  • StornierenAntwort