【问题标题】:Having difficulty stripping HTML tags from an AJAX response难以从 AJAX 响应中剥离 HTML 标签
【发布时间】:2014-10-09 16:28:02
【问题描述】:

我有一个非常简单的 Web 应用程序,但遇到了一些问题。我有两个文件。

helloWorld.jsp:

int result = 0;
out.println("<html><body>"+result+"</body></html>");

getHelloWorld.jsp:

<html><head>
<script type="text/javascript>
 function getHelloWorld() {
                $.get("/helloWorld.jsp, function(data) {

                    var temp = $.trim(data);
                    temp = temp.text(); //have also tried temp.html() and a few other things
                    $('#status').val(temp);

                });
            }
            window.onload = function() {
                getHelloWorld();
            };

</script></head>
<body><div id='status'></div></body></html>

我的问题是:当我加载 getHelloWorld.jsp 时,我要么一无所获(上面的代码不产生任何输出),要么打印出“0”。我试图实现的结果是只打印“0”而没有 HTML 标记。我不能使用简单的查找和替换解决方案,因为我需要这个简单的代码来处理更复杂的响应。我想我可以做正则表达式,但如果已经有处理这个问题的函数,我宁愿不重新发明轮子。

是否有任何(简单的)方法可以从 AJAX 调用中去除 HTML 标记,如上所述?

【问题讨论】:

  • 退后一步,看看更大的图景:一旦你得到你的 ajax 响应,它就只是一个字符串。来自 ajax 并没有让它特别。您应该问如何从 java 中的字符串中剥离 html。
  • 请注意,首先弄清楚如何避免将信息嵌入 HTML 可能会容易得多
  • JSP 作为 JSON 构建模板系统实际上非常有用。它不关心它是否生成 HTML。

标签: javascript jquery html ajax jsp


【解决方案1】:

获取 HTML 并将其放入 jQuery 对象(这将导致 jQuery 将其放入文档片段并解析 HTML),然后从 jQuery 对象中提取文本:

       function getHelloWorld() {
            $.get("/helloWorld.jsp", function(data) {

                var temp = $(data).text();
                $('#status').val(temp);

            });
        }
        window.onload = getHelloWorld;

工作演示:http://jsfiddle.net/jfriend00/9hxrqgzn/


如果您只需要一个数字,您可能想知道为什么要从服务器返回 HTML。也许你应该返回 JSON 而不是那个数字,然后 jQuery 会为你处理 JSON 响应并给你你想要的数字。

【讨论】:

  • 这里我返回 0 只是因为这是一个简单的示例,我试图在转向更复杂的版本之前开始工作。这个答案很有帮助,谢谢。
【解决方案2】:

如果您使用 JSP,最好以这种方式包含 jsp 页面(在服务器端):

<body>
    <div id='status'>
        <jsp:include page="helloWorld.jsp"/>
    </div>
</body>

如果你想使用 JS 试试这个:

        $.get("/helloWorld.jsp", function(data) 
        {
            document.getElementById("status").innerHTML = data;
        });

但是如果你想使用 JQuery 试试这个:

$('#status').load("helloWorld.jsp");

当你像上面那样包含它时,它会去除 html 和 body 标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多