Servlet不从AJAX调用中检索参数

时间:2013-11-20 09:34:47

标签: java ajax xslt servlets

我使用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;,操作会成功读取参数

1 个答案:

答案 0 :(得分:2)

问题似乎是&代表样式表中的&,但在输出期间再次展开/转义为&(因为它是HTML / XML)。您可以尝试在XSL中使用以下内容以避免转义:

xmlHttp.open("GET","examcont?action=AJAX_SectionsBySessionId<xsl:text disable-output-escaping="yes">&amp;</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. &nbsp;)

查看类似问题