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中设置。但如果我的名字中没有任何特殊字符,那么它工作正常。
由于特殊字符,我无法设置这两个值中的任何一个。任何解决方案???
答案 0 :(得分:0)
你可以试试这个:
onclick="getServiceId(${service.id},"${service.name}");"
或者,最好的办法是在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}\")')"