GSP 页面中的 Jquery 给出未捕获的语法错误:意外令牌)错误



在我的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>");

最新更新