难以从AJAX响应中剥离HTML标记

Having difficulty stripping HTML tags from an AJAX response

本文关键字:剥离 HTML 标记 响应 AJAX      更新时间:2023-09-26

我有一个非常简单的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"。我试图实现的结果是只打印出没有HTML标记的"0"。我不能使用简单的查找和替换解决方案,因为我需要这个简单的代码来处理更复杂的响应。我想我可以做正则表达式,但如果已经有一个函数来处理这个,我宁愿不重新发明轮子。

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

将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响应,并给你你想要的数字

如果您使用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标签。