在我的gsp页面中,我正在尝试在页面加载期间使用jquery动态创建链接。
<r:script>
function loadEmailButtons(mailTask,rowIndx,trainingIds){
alert(rowIndx);
$.each(mailTask, function(index, value) {
if(value ==0){
$(".table2 tr:eq("+(rowIndx)+")").append("<td width='5%' ><span><g:link action='mail' params='[mailType:'Training_Information']' controller='mailDraft' id='1'>Info</g:link></span></td>");
}
});
}
$(document).ready(function(){
var mailDraftReminderInstance = ${mailDraftReminderInstance};
loadEmailButtons(mailDraftReminderInstance, 2,trainingInstanceIds);
});
</r:script>
但是我收到错误:
在控制台中我可以看到
function loadEmailButtons(mailTask,rowIndx,trainingIds){
$.each(mailTask, function(index, value) {
if(value ==0){
$(".table2 tr:eq("+(rowIndx)+")").append("<td width='5%' ><span><a href="/opal/mailDraft/mail/1?mailType=Training_Information">Info</a></span></td>");
}
});
}
未捕获的语法错误:意外的标记 ) 靠近 href
这是怎么回事...有没有其他方法可以创建产生上述URL的动态链接?
<g:link>
标记正在生成一个在其属性值两边使用双引号的锚点。而不是
<g:link action='mail' params='[mailType:'Training_Information']' controller='mailDraft' id='1'>Info</g:link>
试试这个:
<a href='${g.createLink(action:'mail', params:[mailType:'Training_Information'], controller:'mailDraft', id:'1').encodeAsJavaScript()}'>Info</a>
encodeAsJavaScript
将以适合在 JS 字符串文字中使用的形式转义引号等内容,您应该在要包含在 JavaScript 字符串中的任何生成值上使用它。有关更多详细信息,请参阅Grails用户指南中有关编解码器的部分。
href
属性两边的双引号是问题所在。像在 width
属性中使用单引号,那么它应该可以工作:
$(".table2 tr:eq("+(rowIndx)+")").append("<td width='5%' ><span><a href='/opal/mailDraft/mail/1?mailType=Training_Information'>Info</a></span></td>");
试试
$(".table2 tr:eq("+(rowIndx)+")").append("<td width='5%' ><span><a href="${createLink(action:'mail', params:'[mailType:'Training_Information']', controller:'mailDraft', id:'1')}">Info</a></span></td>");