【问题标题】:Servlet not retrieve parameters from AJAX callServlet 不从 AJAX 调用中检索参数
【发布时间】:2013-11-20 09:34:47
【问题描述】:

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

【问题讨论】:

  • 那你的问题是什么?
  • "问题是action无法读取参数sessionId"
  • & 只是 XML/XSL 中引用的 &,即 XSL 的输出实际上应该是 &。你能检查一下 XSL 的输出吗?
  • alert("examcont?action=AJAX_SectionsBySessionId&sessionId="+sessionId);输出 &

标签: java ajax xslt servlets


【解决方案1】:

问题似乎是& 在样式表中代表&,但在输出期间再次扩展/转义为&(因为它是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,这 在 Firefox 上工作(尽管它是正确的 XSL 并且应该)。

作为可移植的替代方案,您可以使用以下内容,避免提及 &amp;amp;,方法是在运行时插入您可能称之为“Javascript-escaping”的内容:

xmlHttp.open("GET","examcont?action=AJAX_SectionsBySessionId"+String.fromCharCode(38)+"sessionId="+sessionId,true);

还可以通过更深入的讨论和其他选项查看类似的问题using a html entity in xslt (e.g. &nbsp;)

【讨论】:

    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 2018-01-02
    • 2013-07-02
    • 2011-12-08
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2018-04-27
    相关资源
    最近更新 更多