Javascript函数不能使用具有特殊字符的变量

时间:2014-12-08 08:36:51

标签: javascript spring jsp

Javascript功能:

var Id ; //global variables
var Name; //global variables
function getServiceId(id,name){
    Id=id;
    Name = name;
    alert(Id);
}

这是我的jsp代码

<core:forEach var="service" items="${listServiceBO}">
                                <tr>
                                    <td><a href="Javascript:void(0);">
                                            ${service.name}
                                    </a></td>
                                    <td>${service.multiplicity}</td>
                                    <td>${service.scheduleType}</td>

                                    <td>
                                        <button type="button" id="serviceDeleteButton(${service.id})" name="serviceDeleteButton" 
                                            onclick="getServiceId(${service.id},'${service.name}');" title="Delete"
                                            class="btn btn-link btn-inline" data-toggle="modal"
                                            data-target="#deleteServiceModal"> 
                                            <span class="glyphicon glyphicon-remove"></span>
                                            <span class="sr-only">Delete</span>
                                        </button>
                                    </td>
                                </tr>
                            </core:forEach>

如果我的service.name包含任何特殊字符....我的值未在Javascript中设置。但如果我的名字中没有任何特殊字符,那么它工作正常。

由于特殊字符,我无法设置这两个值中的任何一个。任何解决方案???

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

onclick="getServiceId(${service.id},&quot;${service.name}&quot;);"

或者,最好的办法是在Java中转义所有值:

Base64.encode(str);

并在Javascript中进行解码:

decodeURIComponent(str);

答案 1 :(得分:0)

编辑:

尝试逃避它:

var Id ; //global variables
var Name; //global variables
function getServiceId(id,name){
    Id=id;
    Name = escapeRegExp(name);
    alert(Id);
}

function escapeRegExp(str) {
  return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
jsp并不强大,但可能会改变这个:

onclick="toggle('getServiceId(${service.id},'${service.name}')');" 

为:

onclick="toggle('getServiceId(${service.id}, \"${service.name}\")')"