Javascript 函数不适用于具有特殊字符的变量

Javascript function not working with variables having special character

本文关键字:特殊字符 变量 函数 不适用 适用于 Javascript      更新时间:2023-09-26

Javascript function:

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中设置。但是,如果我在该名称中没有任何特殊字符,那么它就可以正常工作。

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

你能试试这个吗:

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

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

Base64.encode(str);

在Javascript中做解码:

decodeURIComponent(str);

编辑:

尝试转义它:

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}'")')"