【问题标题】:Servlet returns text and not HTMLServlet 返回文本而不是 HTML
【发布时间】:2015-04-29 15:26:47
【问题描述】:
$(document).ready(function() {                        
     $.get('Navigation', function(responseText) { 
           $('#navi').text(responseText);         
     });
});

我正在调用一个名为“导航”的 servlet,以便在 id 为“导航”的 div 中获取结果。 servlet 工作正常。我在 div 中获得了代码,但它显示为文本,而不是呈现为 HTML 代码。

编辑:

public void doGet(HttpServletRequest request,
                  HttpServletResponse response)
          throws ServletException, IOException {

    response.setContentType("text/html");
    response.setCharacterEncoding("UTF-8");

    PrintWriter out = response.getWriter();

    dao = new WebshopDAO();

    kategorien = dao.gibKategorien();

    out.println("<ul>");
    for (Katalog k1 : kategorien) {  
        Integer oberKat = k1.getOberkategorieNr();
        if (oberKat == 0) {
        out.println("<li class='has-sub'><a>" + k1.getKName() + "</a>\n");
            for (Katalog k2 : kategorien) {
                if (Objects.equals(k2.getOberkategorieNr(), k1.getKategorieNr())) {
                    out.println("<ul>\n<li><a><form method='get'><button type='submit' name='category' value='"
                               + k2.getKategorieNr() + "'>" + k2.getKName() + "</button></form></a></li>\n</ul>\n");
                }
            }
        out.println("</li>\n");                
        }          
    } 
    out.println("</ul>");
}

EDIT2:

    <li class='has-sub'><a>Lebensmittel</a>
<ul>

<li><a><form method='get'><button type='submit' name='category' value='5'>Reis</button></form></a></li>

<li><a><form method='get'><button type='submit' name='category' value='6'>Gewürze</button></form></a></li>

<li><a><form method='get'><button type='submit' name='category' value='7'>Tee</button></form></a></li>

<li><a><form method='get'><button type='submit' name='category' value='8'>Snacks</button></form></a></li>

</ul></li>


<li class='has-sub'><a>Küche & Haushalt</a>
<ul>

<li><a><form method='get'><button type='submit' name='category' value='9'>Reiskocher</button></form></a></li>

<li><a><form method='get'><button type='submit' name='category' value='10'>Besteck</button></form></a></li>

</ul></li>


<li class='has-sub'><a>Bücher</a>
<ul>

<li><a><form method='get'><button type='submit' name='category' value='13'>Geschichte</button></form></a></li>

<li><a><form method='get'><button type='submit' name='category' value='14'>Sprachen</button></form></a></li>

<li><a><form method='get'><button type='submit' name='category' value='15'>Reiseführer</button></form></a></li>

</ul></li>


<li class='has-sub'><a>Sonstiges</a>
<ul>

<li><a><form method='get'><button type='submit' name='category' value='16'>T-Shirts</button></form></a></li>

<li><a><form method='get'><button type='submit' name='category' value='17'>Poster</button></form></a></li>

</ul></li>

编辑 3:

servlet 似乎没有看到 CSS,所以我无法打开该类别。如果我的 servlet 没有 Head 标签,我如何告诉它添加 CSS?

【问题讨论】:

  • css 文件托管在哪里?您仍然需要从某个地方提供该内容。要么创建一个动态服务它的 servlet,要么根据您使用的内容,应该已经有一个标准文件夹,用于存放图像、html 和 css 文件等静态资产。
  • 我通过在我的 servlet out.println 中添加 解决了这个问题。有人可以解释一下为什么我必须这样做,以及为什么仅将它放在我的 index.html 上是不够的?

标签: java jquery servlets


【解决方案1】:

使用.html()

.text() 将输入字符串视为纯文本; html() 将其视为 HTML。

$('#navi').html(responseText);

【讨论】:

  • 谢谢,这正是我的预期。问题是它没有以某种方式工作。我添加了我的 servlet 代码。问题可能出在 servlet 中。有什么想法吗?
  • 我不明白你的意思。你的意思是最后一行 out.println("");还是整个 HTML ?
  • function(responseText){} 中添加console.log(responseText) 并查看它在控制台中打印的内容。将其添加到您的答案中
  • 在哪里可以看到日志?
  • 在浏览器的开发者控制台中。例如。在谷歌浏览器中按 F12 并点击控制台。
【解决方案2】:

可以使用load() 方法,它是$.ajax 的快捷方式,就像$.get 一样,并为您处理插入

将您的 $.get 替换为

$('#navi').load('Navigation');

否则在处理 html 字符串时使用 html() 方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多