我使用AJAX调用动作并传递参数,AJAX调用从xsl页面发生,其响应如下:
xmlHttp.open("GET","examcont?action=AJAX_SectionsBySessionId&sessionId="+sessionId,true);
我决定将amp;
放在&
之后,因为xsl在我删除它时会引发此错误:
The reference to entity "sessionId" must end with the ';' delimiter
问题是该操作无法读取参数sessionId
但是我尝试了相同的操作网址,但没有amp;
,操作会成功读取参数
答案 0 :(得分:2)
问题似乎是&
代表样式表中的&
,但在输出期间再次展开/转义为&
(因为它是HTML / XML)。您可以尝试在XSL中使用以下内容以避免转义:
xmlHttp.open("GET","examcont?action=AJAX_SectionsBySessionId<xsl:text disable-output-escaping="yes">&</xsl:text>sessionId="+sessionId,true);
但请注意 - 如果你碰巧让你的XSL在浏览器中运行 - 根据https://bugzilla.mozilla.org/show_bug.cgi?id=98168,这确实不工作(虽然它是正确的XSL,它应该是)
作为便携式替代方案,您可以使用以下内容,通过在运行时插入{Javascript-escaping'来避免提及&
:
xmlHttp.open("GET","examcont?action=AJAX_SectionsBySessionId"+String.fromCharCode(38)+"sessionId="+sessionId,true);
还可以通过深入讨论和其他选项using a html entity in xslt (e.g. )
查看类似问题