我使用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
但是我尝试了相同的操作URL,但没有使用amp;
该操作,则该操作成功读取了参数
问题似乎是样式表中的&
表示&
,但是&
在输出过程中又被扩展/转义了(因为它是HTML / XML)。您可以尝试在XSL中使用以下内容来避免转义:
xmlHttp.open("GET","examcont?action=AJAX_SectionsBySessionId<xsl:text disable-output-escaping="yes">&</xsl:text>sessionId="+sessionId,true);
但是,请注意-如果你碰巧让你的XSL在浏览器中运行-这确实不是工作,根据(虽然它是正确的XSL,它应该)在Firefox https://bugzilla.mozilla.org/show_bug.cgi?id = 98168。
作为可移植的替代方案,您可以使用以下内容来避免提及&
,方法是在运行时将其插入您可能称为“ JavaScript逸出”的位置:
xmlHttp.open("GET","examcont?action=AJAX_SectionsBySessionId"+String.fromCharCode(38)+"sessionId="+sessionId,true);
也可以通过使用xslt中的html实体(例如&nbsp;)进行更深入的讨论和其他选择,来研究类似的问题
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句